thermal_overlay_lcd.py
# هذا العمل مرخص بموجب ترخيص MIT.
# حقوق النشر (c) 2013-2023 OpenMV LLC. جميع الحقوق محفوظة.
# https://github.com/openmv/openmv/blob/master/LICENSE
#
# عرض توضيحي للتراكب الحراري
#
# يوضح هذا المثال كيفية تراكب خريطة حرارية فوق
# مخرج الفيديو المباشر لكاميرا OpenMV من الكاميرا الرئيسية.
import csi
import image
import time
import fir
import display
# أو image.BILINEAR أو 0 (أقرب جار)
drawing_hint = image.BICUBIC | image.CENTER | image.SCALE_ASPECT_KEEP
ALT_OVERLAY = False # عيّنها إلى True لتخصيص صورة أشعة تحت حمراء ثانية.
csi0 = csi.CSI()
csi0.reset()
csi0.pixformat(csi.RGB565)
csi0.framesize((128, 160))
csi0.snapshot(time=2000)
# تهيئة الحساس الحراري
fir.init()
# تهيئة شاشة LCD.
lcd = display.SPIDisplay()
# تخصيص ذاكرة إطار مؤقتة أخرى للحصول على فيديو أكثر سلاسة.
extra_fb = image.Image(csi0.width(), csi0.height(), csi0.pixformat())
# ساعة معدل الإطارات (FPS)
clock = time.clock()
while True:
clock.tick()
# التقاط صورة
img = csi0.snapshot()
# التقاط بيانات الأشعة تحت الحمراء البعيدة (FIR)
# ta: درجة الحرارة المحيطة
# ir: درجات حرارة الأجسام (مصفوفة الأشعة تحت الحمراء)
# to_min: أدنى درجة حرارة للجسم
# to_max: أعلى درجة حرارة للجسم
try:
ta, ir, to_min, to_max = fir.read_ir()
except OSError:
continue
if not ALT_OVERLAY:
# تحجيم الصورة ومزجها مع ذاكرة الإطار المؤقتة
fir.draw_ir(img, ir, hint=drawing_hint)
else:
# إنشاء صورة ثانوية ثم مزجها في المخزن المؤقت للإطار.
extra_fb.clear()
fir.draw_ir(extra_fb, ir, hint=drawing_hint)
img.blend(extra_fb, alpha=128)
# رسم درجات الحرارة المحيطة والدنيا والعليا.
img.draw_string((8, 0), "Ta: %0.2f C" % ta, color=(255, 0, 0), mono_space=False)
img.draw_string(
(8, 8), "To min: %0.2f C" % to_min, color=(255, 0, 0), mono_space=False
)
img.draw_string(
(8, 16), "To max: %0.2f C" % to_max, color=(255, 0, 0), mono_space=False
)
lcd.write(img)
# فرض بث بجودة عالية...
img.to_jpeg(quality=90)
# طباعة معدل الإطارات.
print(clock.fps())