fir --- driver sensor termal (fir == far infrared)¶
Modul fir mengendalikan array termopil Far-Infrared (FIR) yang terhubung ke OpenMV Cam melalui I2C -- sensor 8x8, 16x4, 16x12, dan 32x24 didukung (lihat konstanta di bagian bawah halaman ini). Setiap bingkai mengembalikan suhu per piksel dalam derajat Celsius, yang dapat dirender sebagai citra termal mandiri dengan snapshot() atau digabungkan ke bingkai cahaya tampak dari sensor CSI dengan draw_ir(), biasanya melalui palet warna seperti image.PALETTE_RAINBOW atau image.PALETTE_IRONBOW.
Contoh penggunaan:
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)
Fungsi¶
- fir.init(type: int = -1, refresh: int | None = None, resolution: int | None = None) None¶
Menginisialisasi sensor termal yang terpasang.
typemenunjukkan jenis sensor termal: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.
Secara default
typeadalah-1yang menyebabkanfir.init()secara otomatis memindai dan menginisialisasi sensor termal yang terpasang berdasarkan alamat I2C-nya. Perhatikan bahwafir.FIR_MLX90640danfir.FIR_MLX90641berbagi alamat I2C yang sama sehingga Anda harus melewatkanfir.FIR_MLX90641ketypeuntuk menginisialisasinya secara khusus.refreshadalah laju refresh sensor termal dalam Hz:fir.FIR_MLX90621: Default 64 Hz. Dapat berupa 1, 2, 4, 8, 16, 32, 64, 128, 256, atau 512 Hz.fir.FIR_MLX90640: Default 32 Hz. Dapat berupa 1, 2, 4, 8, 16, 32, atau 64 Hz.fir.FIR_MLX90641: Default 32 Hz. Dapat berupa 1, 2, 4, 8, 16, 32, atau 64 Hz.fir.FIR_AMG8833: Tetap pada 10 Hz.
Laju refresh yang lebih tinggi menurunkan akurasi dan sebaliknya.
resolutionadalah resolusi pengukuran sensor termal dalam bit:fir.FIR_MLX90621: Default 18. Dapat berupa 15, 16, 17, atau 18.fir.FIR_MLX90640: Default 19. Dapat berupa 16, 17, 18, atau 19.fir.FIR_MLX90641: Default 19. Dapat berupa 16, 17, 18, atau 19.fir.FIR_AMG8833: Tetap pada 12.
Resolusi yang lebih tinggi menurunkan rentang suhu maksimum dan sebaliknya.
- fir.width() int¶
Mengembalikan resolusi horizontal (dalam piksel) dari sensor termal yang sedang digunakan.
- fir.height() int¶
Mengembalikan resolusi vertikal (dalam piksel) dari sensor termal yang sedang digunakan.
- fir.type() int¶
Mengembalikan jenis sensor termal yang sedang digunakan. Salah satu dari
fir.FIR_MLX90621,fir.FIR_MLX90640,fir.FIR_MLX90641, ataufir.FIR_AMG8833.
- fir.refresh() int¶
Mengembalikan laju refresh saat ini (Hz) yang ditetapkan selama pemanggilan
fir.init().
- fir.resolution() int¶
Mengembalikan resolusi saat ini (bit) yang ditetapkan selama pemanggilan
fir.init().
- fir.read_ir(hmirror: bool = False, vflip: bool = False, transpose: bool = False, timeout: int = -1) Tuple[float, List[float], float, float]¶
Mengembalikan 4-tuple
(ta, ir, to_min, to_max)yang berisi suhu ambien, daftar float suhu datarwidth * height, suhu minimum yang terlihat, dan suhu maksimum yang terlihat. Semua nilai dalam celsius.hmirrorjika True mencerminkan arrayirsecara horizontal.vflipjika True membalik arrayirsecara vertikal.transposejika True melakukan transposisi arrayir(menukar lebar dan tinggi).timeoutjika bukan -1, jumlah milidetik untuk menunggu bingkai baru.
- 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¶
Menggambar array
irpadaimagedengan sudut kiri atas di(x, y).iradalah daftar suhu datarwidth * heightyang dikembalikan olehfir.read_ir().x_scalemengontrol seberapa besar citra yang dirender diskalakan dalam arah x. Nilai negatif membalik secara horizontal. Jika tidak ditentukan, menyamakany_scaleuntuk mempertahankan rasio aspek.y_scalemengontrol seberapa besar citra yang dirender diskalakan dalam arah y. Nilai negatif membalik secara vertikal. Jika tidak ditentukan, menyamakanx_scaleuntuk mempertahankan rasio aspek.roiadalah persegi panjang wilayah yang diminati(x, y, w, h)dari data IR sumber yang akan digambar.rgb_channeladalah saluran RGB (0=R, 1=G, 2=B) yang dirender ke citra tujuan ketika tujuan adalah RGB565.-1(default) merender semua saluran.alphamengontrol seberapa banyak citra sumber yang dicampur ke tujuan (0-255). 255 sepenuhnya buram; 0 tidak menghasilkan modifikasi.color_paletteadalah enum palet warna (mis.image.PALETTE_RAINBOW,image.PALETTE_IRONBOW) atau citra RGB565 256 piksel yang digunakan sebagai tabel pencarian pada nilai sumber skala abu-abu.alpha_paletteadalah citra GRAYSCALE 256 piksel yang digunakan sebagai tabel pencarian alpha yang memodulasialphaper nilai piksel sumber.hintadalah OR logis dari:image.AREA: Gunakan penskalaan area saat memperkecil.image.BILINEAR: Gunakan penskalaan bilinear.image.BICUBIC: Gunakan penskalaan bikubik.image.CENTER: Pusatkan citra pada tujuan.image.HMIRROR: Cermin horizontal.image.VFLIP: Balik vertikal.image.TRANSPOSE: Transposisi (tukar x/y).image.EXTRACT_RGB_CHANNEL_FIRST: Terapkan ekstraksi rgb_channel sebelum penskalaan.image.APPLY_COLOR_PALETTE_FIRST: Terapkan palet warna sebelum penskalaan.image.SCALE_ASPECT_KEEP: Muat di dalam tujuan mempertahankan rasio aspek.image.SCALE_ASPECT_EXPAND: Isi tujuan mempertahankan rasio aspek (memotong).image.SCALE_ASPECT_IGNORE: Isi tujuan mengabaikan rasio aspek (meregangkan).image.ROTATE_90: Putar 90 derajat.image.ROTATE_180: Putar 180 derajat.image.ROTATE_270: Putar 270 derajat.
scaleadalah 2-tuple(min, max)yang mengontrol suhu min/maks (dalam celsius) yang digunakan untuk menskalakan arrayir. Default ke nilai min dan maksiryang sebenarnya.
- 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¶
Mengambil bingkai dari sensor termal dan mengembalikannya sebagai
image.Image. Bekerja mirip dengansensor.snapshot(). Jikacopy_to_fbadalah False, citra baru dialokasikan di heap MicroPython (yang terbatas); aturcopy_to_fbke True untuk menulis hasilnya ke buffer bingkai.hmirrorjika True mencerminkan citra baru secara horizontal.vflipjika True membalik citra baru secara vertikal.transposejika True melakukan transposisi citra baru.x_scalemengontrol seberapa besar citra baru diskalakan dalam arah x. Nilai negatif membalik secara horizontal. Jika tidak ditentukan, menyamakany_scaleuntuk mempertahankan rasio aspek.y_scalemengontrol seberapa besar citra baru diskalakan dalam arah y. Nilai negatif membalik secara vertikal. Jika tidak ditentukan, menyamakanx_scaleuntuk mempertahankan rasio aspek.roiadalah persegi panjang wilayah yang diminati(x, y, w, h)dari data IR sumber yang akan digambar.rgb_channeladalah saluran RGB (0=R, 1=G, 2=B) yang dirender.-1(default) merender semua saluran.alphamengontrol seberapa banyak citra sumber yang dicampur (0-255). 255 sepenuhnya buram.color_paletteadalah enum palet warna atau citra RGB565 256 piksel yang digunakan sebagai tabel pencarian pada nilai sumber skala abu-abu.alpha_paletteadalah citra GRAYSCALE 256 piksel yang digunakan sebagai tabel pencarian alpha.hintadalah OR logis dari:image.AREA: Gunakan penskalaan area saat memperkecil.image.BILINEAR: Gunakan penskalaan bilinear.image.BICUBIC: Gunakan penskalaan bikubik.image.CENTER: Pusatkan citra pada tujuan.image.HMIRROR: Cermin horizontal.image.VFLIP: Balik vertikal.image.TRANSPOSE: Transposisi (tukar x/y).image.EXTRACT_RGB_CHANNEL_FIRST: Terapkan ekstraksi rgb_channel sebelum penskalaan.image.APPLY_COLOR_PALETTE_FIRST: Terapkan palet warna sebelum penskalaan.image.SCALE_ASPECT_KEEP: Muat di dalam tujuan mempertahankan rasio aspek.image.SCALE_ASPECT_EXPAND: Isi tujuan mempertahankan rasio aspek (memotong).image.SCALE_ASPECT_IGNORE: Isi tujuan mengabaikan rasio aspek (meregangkan).image.ROTATE_90: Putar 90 derajat.image.ROTATE_180: Putar 180 derajat.image.ROTATE_270: Putar 270 derajat.
scaleadalah 2-tuple(min, max)yang mengontrol suhu min/maks (dalam celsius) yang digunakan untuk menskalakan array IR. Default ke nilai min dan maks IR yang sebenarnya.pixformatmengontrol format piksel keluaran. Harus berupaimage.GRAYSCALEatauimage.RGB565.copy_to_fbjika True menulis hasilnya ke buffer bingkai alih-alih mengalokasikan di heap.timeoutjika bukan -1, jumlah milidetik untuk menunggu bingkai baru.
Konstanta¶
- fir.FIR_SHIELD: int¶
OpenMV Cam Thermopile Shield (MLX90621). Alias untuk
fir.FIR_MLX90621.