fir --- مشغّل المستشعر الحراري (fir == far infrared)¶
تشغّل وحدة fir مصفوفات المزدوجات الحرارية للأشعة تحت الحمراء البعيدة (FIR) المتصلة بكاميرا OpenMV Cam عبر I2C -- وتدعم المستشعرات بأحجام 8x8 و16x4 و16x12 و32x24 (انظر الثوابت في أسفل هذه الصفحة). يعيد كل إطار درجة حرارة لكل بكسل بالدرجات المئوية، والتي يمكن عرضها كصورة حرارية مستقلة باستخدام snapshot() أو دمجها على إطار من الضوء المرئي القادم من مستشعر CSI باستخدام draw_ir()، عادةً عبر لوحة ألوان مثل image.PALETTE_RAINBOW أو image.PALETTE_IRONBOW.
مثال على الاستخدام:
import csi
import fir
csi0 = csi.CSI()
csi0.reset()
csi0.pixformat(csi.RGB565)
csi0.framesize(csi.QVGA)
fir.init()
while True:
img = csi0.snapshot()
ta, ir, to_min, to_max = fir.read_ir()
fir.draw_ir(img, ir)
print("====================")
print("Ambient temperature: %0.2f" % ta)
print("Min temperature seen: %0.2f" % to_min)
print("Max temperature seen: %0.2f" % to_max)
الدوال¶
- fir.init(type: int = -1, refresh: int | None = None, resolution: int | None = None) None¶
تهيئة مستشعر حراري متصل.
يشير
typeإلى نوع المستشعر الحراري:fir.FIR_SHIELD: 16x4 بكسل (MLX90621).fir.FIR_MLX90621: 16x4 بكسل.fir.FIR_MLX90640: 32x24 بكسل.fir.FIR_MLX90641: 16x12 بكسل.fir.FIR_AMG8833: 8x8 بكسل.
افتراضيًا تكون قيمة
typeهي-1مما يجعلfir.init()يفحص ويهيئ تلقائيًا مستشعرًا حراريًا متصلًا بناءً على عنوان I2C الخاص به. لاحظ أنfir.FIR_MLX90640وfir.FIR_MLX90641يتشاركان نفس عنوان I2C، لذا يجب تمريرfir.FIR_MLX90641إلىtypeلتهيئته على وجه التحديد.refreshهو معدل تحديث المستشعر الحراري بوحدة Hz:fir.FIR_MLX90621: الافتراضي 64 Hz. يمكن أن يكون 1 أو 2 أو 4 أو 8 أو 16 أو 32 أو 64 أو 128 أو 256 أو 512 Hz.fir.FIR_MLX90640: الافتراضي 32 Hz. يمكن أن يكون 1 أو 2 أو 4 أو 8 أو 16 أو 32 أو 64 Hz.fir.FIR_MLX90641: الافتراضي 32 Hz. يمكن أن يكون 1 أو 2 أو 4 أو 8 أو 16 أو 32 أو 64 Hz.fir.FIR_AMG8833: ثابت عند 10 Hz.
معدل التحديث الأعلى يقلل الدقة والعكس صحيح.
resolutionهي دقة قياس المستشعر الحراري بوحدة البتات:fir.FIR_MLX90621: الافتراضي 18. يمكن أن يكون 15 أو 16 أو 17 أو 18.fir.FIR_MLX90640: الافتراضي 19. يمكن أن يكون 16 أو 17 أو 18 أو 19.fir.FIR_MLX90641: الافتراضي 19. يمكن أن يكون 16 أو 17 أو 18 أو 19.fir.FIR_AMG8833: ثابت عند 12.
الدقة الأعلى تقلل أقصى نطاق لدرجة الحرارة والعكس صحيح.
- fir.type() int¶
تعيد نوع المستشعر الحراري المستخدم. واحد من
fir.FIR_MLX90621أوfir.FIR_MLX90640أوfir.FIR_MLX90641أوfir.FIR_AMG8833.
- fir.refresh() int¶
تعيد معدل التحديث الحالي (Hz) المضبوط أثناء استدعاء
fir.init().
- fir.resolution() int¶
تعيد الدقة الحالية (بالبتات) المضبوطة أثناء استدعاء
fir.init().
- fir.read_ir(hmirror: bool = False, vflip: bool = False, transpose: bool = False, timeout: int = -1) Tuple[float, List[float], float, float]¶
تعيد رباعية
(ta, ir, to_min, to_max)تحتوي على درجة الحرارة المحيطة، وقائمة مسطحة بحجمwidth * heightمن درجات الحرارة العشرية، وأدنى درجة حرارة تمت ملاحظتها، وأقصى درجة حرارة تمت ملاحظتها. جميع القيم بالدرجات المئوية.hmirrorإذا كانت True تعكس مصفوفةirأفقيًا.vflipإذا كانت True تقلب مصفوفةirرأسيًا.transposeإذا كانت True تنقل مصفوفةir(تبدل العرض والارتفاع).timeoutإذا لم تكن -1، فهي عدد الميلي ثانية المراد انتظارها لإطار جديد.
- fir.draw_ir(image: image.Image, ir: List[float], x: int = 0, y: int = 0, x_scale: float | None = None, y_scale: float | None = None, roi: Tuple[int, int, int, int] | None = None, rgb_channel: int = -1, alpha: int = 255, color_palette: int | None = image.PALETTE_RAINBOW, alpha_palette: int | None = None, hint: int = 0, scale: Tuple[float, float] | None = None) None¶
ترسم مصفوفة
irعلىimageبحيث تكون زاويتها العلوية اليسرى عند(x, y).irهي قائمة درجات الحرارة المسطحة بحجمwidth * heightالتي تعيدهاfir.read_ir().x_scaleيتحكم في مقدار تكبير الصورة المعروضة في اتجاه x. القيمة السالبة تقلب أفقيًا. إذا لم تُحدد، فإنها تطابقy_scaleللحفاظ على نسبة العرض إلى الارتفاع.y_scaleيتحكم في مقدار تكبير الصورة المعروضة في اتجاه y. القيمة السالبة تقلب رأسيًا. إذا لم تُحدد، فإنها تطابقx_scaleللحفاظ على نسبة العرض إلى الارتفاع.roiهو مستطيل منطقة الاهتمام(x, y, w, h)من بيانات IR المصدر المراد رسمها.rgb_channelهو قناة RGB (0=R، 1=G، 2=B) المراد عرضها على صورة الوجهة عندما تكون الوجهة RGB565. القيمة-1(الافتراضية) تعرض جميع القنوات.alphaيتحكم في مقدار مزج صورة المصدر مع الوجهة (0-255). القيمة 255 معتمة تمامًا؛ والقيمة 0 لا تؤدي إلى أي تعديل.color_paletteهو تعداد لوحة ألوان (مثلimage.PALETTE_RAINBOWوimage.PALETTE_IRONBOW) أو صورة RGB565 بحجم 256 بكسل تُستخدم كجدول بحث على قيمة المصدر بتدرج الرمادي.alpha_paletteهي صورة GRAYSCALE بحجم 256 بكسل تُستخدم كجدول بحث ألفا يضبطalphaلكل قيمة بكسل في المصدر.hintهو OR منطقي لما يلي:image.AREA: استخدام تحجيم المساحة عند تصغير الحجم.image.BILINEAR: استخدام التحجيم الثنائي الخطي.image.BICUBIC: استخدام التحجيم الثنائي التكعيبي.image.CENTER: توسيط الصورة على الوجهة.image.HMIRROR: عكس أفقي.image.VFLIP: قلب رأسي.image.TRANSPOSE: نقل (تبديل x/y).image.EXTRACT_RGB_CHANNEL_FIRST: تطبيق استخراج rgb_channel قبل التحجيم.image.APPLY_COLOR_PALETTE_FIRST: تطبيق لوحة الألوان قبل التحجيم.image.SCALE_ASPECT_KEEP: الاحتواء داخل الوجهة مع الحفاظ على نسبة العرض إلى الارتفاع.image.SCALE_ASPECT_EXPAND: ملء الوجهة مع الحفاظ على نسبة العرض إلى الارتفاع (مع القص).image.SCALE_ASPECT_IGNORE: ملء الوجهة مع تجاهل نسبة العرض إلى الارتفاع (مع التمدد).image.ROTATE_90: التدوير بمقدار 90 درجة.image.ROTATE_180: التدوير بمقدار 180 درجة.image.ROTATE_270: التدوير بمقدار 270 درجة.
scaleهي ثنائية(min, max)تتحكم في الحد الأدنى/الأقصى لدرجة الحرارة (بالدرجات المئوية) المستخدمة لتحجيم مصفوفةir. الافتراضي هو القيمتان الفعليتان الدنيا والقصوى لـir.
- fir.snapshot(hmirror: bool = False, vflip: bool = False, transpose: bool = False, x_scale: float | None = None, y_scale: float | None = None, roi: Tuple[int, int, int, int] | None = None, rgb_channel: int = -1, alpha: int = 255, color_palette: int | None = image.PALETTE_RAINBOW, alpha_palette: int | None = None, hint: int = 0, scale: Tuple[float, float] | None = None, pixformat: int = image.RGB565, copy_to_fb: bool = False, timeout: int = -1) image.Image¶
تلتقط إطارًا من المستشعر الحراري وتعيده كـ
image.Image. تعمل بشكل مماثل لـsensor.snapshot(). إذا كانتcopy_to_fbبقيمة False فإن الصورة الجديدة تُخصص على كومة MicroPython (المحدودة)؛ اضبطcopy_to_fbعلى True لكتابة النتيجة في مخزن الإطارات بدلاً من ذلك.hmirrorإذا كانت True تعكس الصورة الجديدة أفقيًا.vflipإذا كانت True تقلب الصورة الجديدة رأسيًا.transposeإذا كانت True تنقل الصورة الجديدة.x_scaleيتحكم في مقدار تكبير الصورة الجديدة في اتجاه x. القيمة السالبة تقلب أفقيًا. إذا لم تُحدد، فإنها تطابقy_scaleللحفاظ على نسبة العرض إلى الارتفاع.y_scaleيتحكم في مقدار تكبير الصورة الجديدة في اتجاه y. القيمة السالبة تقلب رأسيًا. إذا لم تُحدد، فإنها تطابقx_scaleللحفاظ على نسبة العرض إلى الارتفاع.roiهو مستطيل منطقة الاهتمام(x, y, w, h)من بيانات IR المصدر المراد رسمها.rgb_channelهو قناة RGB (0=R، 1=G، 2=B) المراد عرضها. القيمة-1(الافتراضية) تعرض جميع القنوات.alphaيتحكم في مقدار مزج صورة المصدر (0-255). القيمة 255 معتمة تمامًا.color_paletteهو تعداد لوحة ألوان أو صورة RGB565 بحجم 256 بكسل تُستخدم كجدول بحث على قيمة المصدر بتدرج الرمادي.alpha_paletteهي صورة GRAYSCALE بحجم 256 بكسل تُستخدم كجدول بحث ألفا.hintهو OR منطقي لما يلي:image.AREA: استخدام تحجيم المساحة عند تصغير الحجم.image.BILINEAR: استخدام التحجيم الثنائي الخطي.image.BICUBIC: استخدام التحجيم الثنائي التكعيبي.image.CENTER: توسيط الصورة على الوجهة.image.HMIRROR: عكس أفقي.image.VFLIP: قلب رأسي.image.TRANSPOSE: نقل (تبديل x/y).image.EXTRACT_RGB_CHANNEL_FIRST: تطبيق استخراج rgb_channel قبل التحجيم.image.APPLY_COLOR_PALETTE_FIRST: تطبيق لوحة الألوان قبل التحجيم.image.SCALE_ASPECT_KEEP: الاحتواء داخل الوجهة مع الحفاظ على نسبة العرض إلى الارتفاع.image.SCALE_ASPECT_EXPAND: ملء الوجهة مع الحفاظ على نسبة العرض إلى الارتفاع (مع القص).image.SCALE_ASPECT_IGNORE: ملء الوجهة مع تجاهل نسبة العرض إلى الارتفاع (مع التمدد).image.ROTATE_90: التدوير بمقدار 90 درجة.image.ROTATE_180: التدوير بمقدار 180 درجة.image.ROTATE_270: التدوير بمقدار 270 درجة.
scaleهي ثنائية(min, max)تتحكم في الحد الأدنى/الأقصى لدرجة الحرارة (بالدرجات المئوية) المستخدمة لتحجيم مصفوفة IR. الافتراضي هو القيمتان الفعليتان الدنيا والقصوى لـ IR.pixformatيتحكم في تنسيق بكسل الإخراج. يجب أن يكونimage.GRAYSCALEأوimage.RGB565.copy_to_fbإذا كانت True تكتب النتيجة في مخزن الإطارات بدلاً من التخصيص على الكومة.timeoutإذا لم تكن -1، فهي عدد الميلي ثانية المراد انتظارها لإطار جديد.
الثوابت¶
- fir.FIR_SHIELD: int¶
درع المزدوجات الحرارية لكاميرا OpenMV Cam (MLX90621). اسم بديل لـ
fir.FIR_MLX90621.