fir — termal sensör sürücüsü (fir == far infrared)¶
fir modülü, bir OpenMV Cam’e I2C üzerinden bağlanan Uzak Kızılötesi (FIR) termopil dizilerini sürer – 8x8, 16x4, 16x12 ve 32x24 sensörler desteklenir (bu sayfanın altındaki sabitlere bakın). Her çerçeve, piksel başına Santigrat derece cinsinden bir sıcaklık döndürür; bu, snapshot() ile bağımsız bir termal görüntü olarak işlenebilir veya genellikle image.PALETTE_RAINBOW ya da image.PALETTE_IRONBOW gibi bir renk paleti aracılığıyla draw_ir() ile CSI sensöründen gelen görünür ışık çerçevesinin üzerine birleştirilebilir.
Örnek kullanım:
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)
Fonksiyonlar¶
- fir.init(type: int = -1, refresh: int | None = None, resolution: int | None = None) None¶
Bağlı bir termal sensörü başlatır.
typetermal sensörün türünü belirtir:fir.FIR_SHIELD: 16x4 piksel (MLX90621).fir.FIR_MLX90621: 16x4 piksel.fir.FIR_MLX90640: 32x24 piksel.fir.FIR_MLX90641: 16x12 piksel.fir.FIR_AMG8833: 8x8 piksel.
Varsayılan olarak
typedeğeri-1olup, bu durumfir.init()fonksiyonunun bağlı bir termal sensörü I2C adresine göre otomatik olarak taramasına ve başlatmasına neden olur.fir.FIR_MLX90640vefir.FIR_MLX90641aynı I2C adresini paylaştığından, özel olarak başlatmak içintypeparametresinefir.FIR_MLX90641değerini geçmeniz gerektiğini unutmayın.refreshHz cinsinden termal sensör yenileme hızıdır:fir.FIR_MLX90621: Varsayılan 64 Hz. 1, 2, 4, 8, 16, 32, 64, 128, 256 veya 512 Hz olabilir.fir.FIR_MLX90640: Varsayılan 32 Hz. 1, 2, 4, 8, 16, 32 veya 64 Hz olabilir.fir.FIR_MLX90641: Varsayılan 32 Hz. 1, 2, 4, 8, 16, 32 veya 64 Hz olabilir.fir.FIR_AMG8833: 10 Hz olarak sabittir.
Daha yüksek bir yenileme hızı doğruluğu düşürür ve tersi de geçerlidir.
resolutionbit cinsinden termal sensör ölçüm çözünürlüğüdür:fir.FIR_MLX90621: Varsayılan 18. 15, 16, 17 veya 18 olabilir.fir.FIR_MLX90640: Varsayılan 19. 16, 17, 18 veya 19 olabilir.fir.FIR_MLX90641: Varsayılan 19. 16, 17, 18 veya 19 olabilir.fir.FIR_AMG8833: 12 olarak sabittir.
Daha yüksek bir çözünürlük maksimum sıcaklık aralığını düşürür ve tersi de geçerlidir.
- fir.type() int¶
Kullanımdaki termal sensörün türünü döndürür.
fir.FIR_MLX90621,fir.FIR_MLX90640,fir.FIR_MLX90641veyafir.FIR_AMG8833değerlerinden biri.
- fir.refresh() int¶
fir.init()çağrısı sırasında ayarlanan geçerli yenileme hızını (Hz) döndürür.
- fir.resolution() int¶
fir.init()çağrısı sırasında ayarlanan geçerli çözünürlüğü (bit) döndürür.
- fir.read_ta() float¶
Ortam sıcaklığını (yani sensör sıcaklığını) Santigrat cinsinden float olarak döndürür.
- fir.read_ir(hmirror: bool = False, vflip: bool = False, transpose: bool = False, timeout: int = -1) Tuple[float, List[float], float, float]¶
Ortam sıcaklığını,
width * heightboyutunda düz bir float sıcaklık listesini, görülen minimum sıcaklığı ve görülen maksimum sıcaklığı içeren bir 4’lü(ta, ir, to_min, to_max)döndürür. Tüm değerler Santigrat cinsindendir.hmirrorTrue iseirdizisini yatay olarak aynalar.vflipTrue iseirdizisini dikey olarak çevirir.transposeTrue iseirdizisini devrik hale getirir (genişlik ve yüksekliği değiştirir).timeout-1 değilse, yeni bir çerçeve için beklenecek milisaniye sayısıdır.
- 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¶
irdizisini, sol üst köşesi(x, y)konumunda olacak şekildeimageüzerine çizer.ir,fir.read_ir()tarafından döndürülenwidth * heightboyutundaki düz sıcaklık listesidir.x_scaleişlenen görüntünün x yönünde ne kadar ölçekleneceğini denetler. Negatif bir değer yatay olarak çevirir. Belirtilmezse, en boy oranını korumak içiny_scaleile eşleşir.y_scaleişlenen görüntünün y yönünde ne kadar ölçekleneceğini denetler. Negatif bir değer dikey olarak çevirir. Belirtilmezse, en boy oranını korumak içinx_scaleile eşleşir.roiçizilecek kaynak IR verisinin ilgi bölgesi dikdörtgenidir(x, y, w, h).rgb_channel, hedef RGB565 olduğunda hedef görüntüye işlenecek RGB kanalıdır (0=R, 1=G, 2=B).-1(varsayılan) tüm kanalları işler.alphakaynak görüntünün ne kadarının hedefe karıştırılacağını denetler (0-255). 255 tamamen opaktır; 0 hiçbir değişiklik yapmaz.color_palettebir renk paleti numaralandırması (örn.image.PALETTE_RAINBOW,image.PALETTE_IRONBOW) ya da gri tonlama kaynak değeri üzerinde arama tablosu olarak kullanılan 256 piksellik bir RGB565 görüntüsüdür.alpha_palette, kaynak piksel değeri başınaalphadeğerini modüle eden bir alfa arama tablosu olarak kullanılan 256 piksellik bir GRAYSCALE görüntüsüdür.hintşunların mantıksal VEYA’sıdır:image.AREA: Küçültürken alan ölçeklemesini kullan.image.BILINEAR: Bilineer ölçekleme kullan.image.BICUBIC: Bikübik ölçekleme kullan.image.CENTER: Görüntüyü hedefte ortala.image.HMIRROR: Yatay olarak aynala.image.VFLIP: Dikey olarak çevir.image.TRANSPOSE: Devrik hale getir (x/y değiştir).image.EXTRACT_RGB_CHANNEL_FIRST: rgb_channel çıkarımını ölçeklemeden önce uygula.image.APPLY_COLOR_PALETTE_FIRST: Renk paletini ölçeklemeden önce uygula.image.SCALE_ASPECT_KEEP: En boy oranını koruyarak hedefin içine sığdır.image.SCALE_ASPECT_EXPAND: En boy oranını koruyarak hedefi doldur (kırpar).image.SCALE_ASPECT_IGNORE: En boy oranını yok sayarak hedefi doldur (gerer).image.ROTATE_90: 90 derece döndür.image.ROTATE_180: 180 derece döndür.image.ROTATE_270: 270 derece döndür.
scale,irdizisini ölçeklemek için kullanılan minimum/maksimum sıcaklığı (Santigrat cinsinden) denetleyen bir 2’li(min, max)değeridir. Varsayılan olarak gerçekirminimum ve maksimum değerleridir.
- 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¶
Termal sensörden bir çerçeve yakalar ve bunu bir
image.Imageolarak döndürür.sensor.snapshot()ile benzer şekilde çalışır.copy_to_fbFalse ise yeni görüntü MicroPython yığınında (ki bu sınırlıdır) ayrılır; bunun yerine sonucu çerçeve arabelleğine (frame buffer) yazmak içincopy_to_fbdeğerini True olarak ayarlayın.hmirrorTrue ise yeni görüntüyü yatay olarak aynalar.vflipTrue ise yeni görüntüyü dikey olarak çevirir.transposeTrue ise yeni görüntüyü devrik hale getirir.x_scaleyeni görüntünün x yönünde ne kadar ölçekleneceğini denetler. Negatif bir değer yatay olarak çevirir. Belirtilmezse, en boy oranını korumak içiny_scaleile eşleşir.y_scaleyeni görüntünün y yönünde ne kadar ölçekleneceğini denetler. Negatif bir değer dikey olarak çevirir. Belirtilmezse, en boy oranını korumak içinx_scaleile eşleşir.roiçizilecek kaynak IR verisinin ilgi bölgesi dikdörtgenidir(x, y, w, h).rgb_channelişlenecek RGB kanalıdır (0=R, 1=G, 2=B).-1(varsayılan) tüm kanalları işler.alphakaynak görüntünün ne kadarının karıştırılacağını denetler (0-255). 255 tamamen opaktır.color_palettebir renk paleti numaralandırması ya da gri tonlama kaynak değeri üzerinde arama tablosu olarak kullanılan 256 piksellik bir RGB565 görüntüsüdür.alpha_palettebir alfa arama tablosu olarak kullanılan 256 piksellik bir GRAYSCALE görüntüsüdür.hintşunların mantıksal VEYA’sıdır:image.AREA: Küçültürken alan ölçeklemesini kullan.image.BILINEAR: Bilineer ölçekleme kullan.image.BICUBIC: Bikübik ölçekleme kullan.image.CENTER: Görüntüyü hedefte ortala.image.HMIRROR: Yatay olarak aynala.image.VFLIP: Dikey olarak çevir.image.TRANSPOSE: Devrik hale getir (x/y değiştir).image.EXTRACT_RGB_CHANNEL_FIRST: rgb_channel çıkarımını ölçeklemeden önce uygula.image.APPLY_COLOR_PALETTE_FIRST: Renk paletini ölçeklemeden önce uygula.image.SCALE_ASPECT_KEEP: En boy oranını koruyarak hedefin içine sığdır.image.SCALE_ASPECT_EXPAND: En boy oranını koruyarak hedefi doldur (kırpar).image.SCALE_ASPECT_IGNORE: En boy oranını yok sayarak hedefi doldur (gerer).image.ROTATE_90: 90 derece döndür.image.ROTATE_180: 180 derece döndür.image.ROTATE_270: 270 derece döndür.
scale, IR dizisini ölçeklemek için kullanılan minimum/maksimum sıcaklığı (Santigrat cinsinden) denetleyen bir 2’li(min, max)değeridir. Varsayılan olarak gerçek IR minimum ve maksimum değerleridir.pixformatçıktı piksel formatını denetler.image.GRAYSCALEveyaimage.RGB565olmalıdır.copy_to_fbTrue ise sonucu yığında ayırmak yerine çerçeve arabelleğine (frame buffer) yazar.timeout-1 değilse, yeni bir çerçeve için beklenecek milisaniye sayısıdır.
Sabitler¶
- fir.FIR_SHIELD: int¶
OpenMV Cam Thermopile Shield (MLX90621).
fir.FIR_MLX90621için takma ad.