kelas Image -- Objek Image¶
Image adalah tipe data utama dari modul image -- sebuah buffer piksel dalam memori yang digunakan oleh setiap rutinitas gambar, setiap filter, setiap transformasi geometris, dan setiap rutinitas ekstraksi fitur. Setiap bingkai yang keluar dari csi.CSI.snapshot() adalah Image; begitu juga setiap bingkai yang dimuat dari disk, didekode dari JPEG atau PNG, dialokasikan dari ndarray bergaya numpy, atau dibuat sebagai kanvas gambar kosong.
Sebuah Image digambarkan oleh tiga angka -- width, height, dan pixformat -- ditambah sebuah buffer piksel yang berkesinambungan. Format piksel menentukan tata letak dalam memori dan operasi yang tersedia:
BINARY (1 bpp) -- 1 bit per piksel; digunakan oleh morfologi dan pembuatan ambang batas.
GRAYSCALE (8 bpp) -- 1 byte per piksel; format standar untuk sebagian besar CV (AprilTag, tepi, ORB, aliran optis).
RGB565 (16 bpp) -- 2 byte per piksel (5R/6G/5B); format warna bawaan.
BAYER (8 bpp) -- data mosaik Bayer mentah langsung dari sensor. Sebagian besar metode CV tidak tersedia pada citra Bayer; lakukan debayer ke GRAYSCALE / RGB565 terlebih dahulu.
YUV422 (16 bpp) -- warna dengan chroma-subsampling 4:2:2, dua byte per piksel. Hanya sebagian metode yang bekerja langsung pada YUV422.
JPEG / PNG -- buffer terkompresi. Operasi tingkat piksel memerlukan
to_grayscale()atauto_rgb565()terlebih dahulu.
Asal Objek Image¶
Ada empat cara untuk mendapatkan sebuah Image:
Dari buffer bingkai kamera --
csi.CSI().snapshot()mengembalikan bingkai yang ditangkap berikutnya. Objek yang dikembalikan adalah pembungkus tipis di sekitar memori buffer-bingkai kamera, sehingga operasi gambar/filter apa pun padanya akan mengubah apa yang dikirim ke pratinjau IDE dan tampilan.Dari sebuah file -- teruskan string path ke konstruktor
Image. BMP, PGM, PPM, JPEG, dan PNG didekode langsung ke RAM (atau ke buffer bingkai kamera jikacopy_to_fb=True).Dari sebuah ndarray -- teruskan array float32
(h, w)atau(h, w, 3). Piksel diskalakan dari0.0 -- 255.0menjadi GRAYSCALE atau RGB565.Kosong -- teruskan
(width, height, pixformat)untuk mengalokasikan permukaan gambar yang diisi nol. Untuk format piksel terkompresi (JPEG/PNG) diperlukan argumenbuffer=yang berisi aliran byte terkompresi.
Loop tangkap-proses-tampilkan yang umum¶
import csi
import image
sensor = csi.CSI()
sensor.reset()
sensor.pixformat(csi.RGB565)
sensor.framesize(csi.QVGA)
while True:
img = sensor.snapshot() # capture
for blob in img.find_blobs([(30, 100, 15, 127, 15, 127)]): # process
img.draw_rectangle(blob.rect) # annotate
# img is shown automatically in the IDE preview and on any
# attached display.
Pengindeksan, panjang, iterasi, dan akses seperti-bytes¶
Pengindeksan --
img[i]membaca pikseli(linier, row-major).img[i] = valuemenulisnya. Piksel Grayscale / Bayer adalah bilangan bulat 8-bit, piksel RGB565 / YUV422 adalah bilangan bulat 16-bit yang dikemas, piksel biner adalah 0 / 1. Untuk citra JPEG / PNG, ruang indeks adalah aliran byte terkompresi, bukan piksel.Panjang --
len(img)mengembalikan jumlah piksel untuk format yang tidak terkompresi atau jumlah byte untuk format terkompresi.Iterasi --
for px in img: ...melintasi array piksel dalam urutan yang sama dengan pengindeksan[].Seperti-Bytes --
Imagemengekspos protokol buffer baca, sehingga Anda dapat meneruskannya langsung ke apa pun yang membutuhkanbytes/bytearray(misalnyauart.write(img),socket.send(img),hashlib.sha256(img)). Gunakanbytearray()sebagai gantinya untuk mendapatkan tampilan baca/tulis.
Flag Hint¶
Banyak metode Image menerima argumen hint yang merupakan OR logis dari flag-flag berikut:
image.AREA: Gunakan penskalaan area saat memperkecil versus bawaan nearest neighbor.
image.BILINEAR: Gunakan penskalaan bilinear versus bawaan nearest neighbor.
image.BICUBIC: Gunakan penskalaan bicubic versus bawaan nearest neighbor.
image.CENTER: Posisikan citra yang digambar di tengah tampilan. Ini diterapkan setelah penskalaan.
image.HMIRROR: Balikkan citra secara horizontal.
image.VFLIP: Balikkan citra secara vertikal.
image.TRANSPOSE: Transposisikan citra (tukar x/y).
image.EXTRACT_RGB_CHANNEL_FIRST: Lakukan ekstraksi rgb_channel sebelum penskalaan.
image.APPLY_COLOR_PALETTE_FIRST: Terapkan palet warna sebelum penskalaan.
image.SCALE_ASPECT_KEEP: Skalakan citra yang digambar agar muat di dalam tampilan.
image.SCALE_ASPECT_EXPAND: Skalakan citra yang digambar untuk mengisi tampilan (menghasilkan pemotongan)
image.SCALE_ASPECT_IGNORE: Skalakan citra yang digambar untuk mengisi tampilan (menghasilkan peregangan).
image.ROTATE_90: Putar citra 90 derajat (ini hanya VFLIP | TRANSPOSE).
image.ROTATE_180: Putar citra 180 derajat (ini hanya HMIRROR | VFLIP).
image.ROTATE_270: Putar citra 270 derajat (ini hanya HMIRROR | TRANSPOSE).
image.BLACK_BACKGROUND: Asumsikan citra latar belakang yang digambar berwarna hitam sehingga mempercepat pencampuran. Hanya didukung olehImage.draw_image()danImage.get_similarity().
- class image.Image(arg: str | int | ndarray, height: int = -1, pixformat: int = -1, *, buffer: bytes | bytearray | memoryview | None = None, copy_to_fb: bool = False)¶
Jika
argadalah string maka ini akan membuat objek citra baru dari file di patharg. Mendukung pemuatan file citra bmp/pgm/ppm/jpg/jpeg/png dari disk. Jikacopy_to_fbbernilai true, citra akan disalin ke buffer bingkai versus dialokasikan di heap.Jika
argadalahndarraymaka ini akan membuat objek citra baru darindarray. Objekndarraydengan bentuk(w, h)diperlakukan sebagai citra grayscale,(w, h, 3)diperlakukan sebagai citra RGB565. Hanyandarraysdengan titik float32 yang didukung saat ini. Saat membuat citra dengan cara ini, jika Anda meneruskan argumenbuffermaka akan digunakan untuk menyimpan data citra versus mengalokasikan ruang di heap. Jikacopy_to_fbbernilai true, citra disalin ke buffer bingkai versus dialokasikan di heap atau menggunakanbuffer.Jika
argadalahint, maka dianggap sebagai lebar citra baru dan nilaiheightserta nilaiformatharus menyusul untuk membuat objek citra baru yang kosong.formatdapat berupa nilai pixformat citra apa pun sepertiimage.GRAYSCALE. Citra akan diinisialisasi ke semua nol. Perlu diperhatikan bahwa nilaibufferdiharapkan untuk format citra terkompresi.bufferdianggap sebagai sumber data citra untuk membuat citra dengan cara ini. Jika digunakan dengancopy_to_fbdata daribufferdisalin ke buffer bingkai. Jika Anda ingin membuat citra JPEG dari objek JPEGbytes()ataubytearray(), Anda dapat meneruskanwidth,height,image.JPEGuntuk JPEG beserta mengaturbufferke aliran byte JPEG untuk membuat citra JPEG.Citra mendukung notasi "[]". Lakukan
image[index] = 8/16-bit valueuntuk menetapkan piksel citra atauimage[index]untuk mendapatkan piksel citra yang akan berupa nilai 8-bit untuk citra grayscale/bayer atau nilai 16-bit untuk citra RGB565/YUV. Citra biner mengembalikan nilai 1-bit.Untuk citra JPEG, notasi "[]" memungkinkan Anda mengakses blob JPEG terkompresi sebagai byte-array. Membaca dan menulis ke array data ini bersifat opak karena citra JPEG adalah aliran byte terkompresi.
Citra juga mendukung operasi buffer baca. Anda dapat meneruskan citra ke berbagai fungsi MicroPython seolah-olah citra tersebut adalah objek byte-array. Khususnya, jika Anda ingin mengirimkan sebuah citra, Anda cukup meneruskannya ke fungsi tulis UART/SPI/I2C untuk dikirimkan secara otomatis.
Metode Dasar¶
- format() int¶
Mengembalikan
image.GRAYSCALEuntuk citra grayscale,image.RGB565untuk citra RGB565,image.BAYERuntuk citra pola bayer, danimage.JPEGuntuk citra JPEG.
- bytearray() bytearray¶
Mengembalikan objek
bytearrayyang menunjuk ke data citra untuk akses baca/tulis tingkat byte.Catatan
Objek citra secara otomatis dilempar sebagai objek
bytesketika diteruskan ke driver MicroPython yang memerlukan objek sepertibytes. Ini adalah akses hanya-baca. Panggilbytearray()untuk mendapatkan akses baca/tulis.
- get_pixel(x: int, y: int, rgbtuple: bool | None = None) int | Tuple[int, int, int]¶
Untuk citra grayscale: Mengembalikan nilai piksel grayscale pada lokasi (x, y). Untuk citra RGB565: Mengembalikan tupel piksel RGB888 (r, g, b) pada lokasi (x, y). Untuk citra pola bayer: Mengembalikan nilai piksel pada lokasi (x, y).
Mengembalikan None jika
xatauyberada di luar citra.xdanydapat diteruskan secara terpisah atau sebagai tupel.rgbtuplejika True menyebabkan metode ini mengembalikan tupel RGB888. Jika tidak, metode ini mengembalikan nilai integer dari piksel yang mendasarinya. Yaitu untuk citra RGB565 metode ini mengembalikan nilai RGB565. Defaultnya True untuk citra RGB565 dan False untuk yang lainnya.Tidak didukung pada citra terkompresi.
Catatan
Image.get_pixel()danImage.set_pixel()adalah satu-satunya metode yang memungkinkan Anda memanipulasi citra pola bayer. Citra pola bayer adalah citra harfiah di mana piksel dalam citra adalah R/G/R/G/dll. untuk baris genap dan G/B/G/B/dll. untuk baris ganjil. Setiap piksel berukuran 8-bit. Jika Anda memanggil metode ini denganrgbtuplediatur makaImage.get_pixel()akan melakukan debayer citra sumber pada lokasi piksel tersebut dan mengembalikan tupel RGB888 yang valid untuk lokasi piksel tersebut.
- set_pixel(x: int, y: int, pixel: int | Tuple[int, int, int]) Image¶
Untuk citra grayscale: Mengatur piksel pada lokasi (x, y) ke nilai grayscale
pixel. Untuk citra RGB565: Mengatur piksel pada lokasi (x, y) ke tupel RGB888 (r, g, b)pixel. Untuk citra pola bayer: Mengatur nilai piksel pada lokasi (x, y) ke nilaipixel.Mengembalikan objek citra sehingga Anda dapat memanggil metode lain menggunakan notasi
..xdanydapat diteruskan secara terpisah atau sebagai tupel.pixeldapat berupa tupel RGB888 (r, g, b) atau nilai piksel yang mendasarinya (yaitu nilai RGB565 untuk citra RGB565 atau nilai 8-bit untuk citra grayscale).Tidak didukung pada citra terkompresi.
Catatan
Image.get_pixel()danImage.set_pixel()adalah satu-satunya metode yang memungkinkan Anda memanipulasi citra pola bayer. Citra pola bayer adalah citra harfiah di mana piksel dalam citra adalah R/G/R/G/dll. untuk baris genap dan G/B/G/B/dll. untuk baris ganjil. Setiap piksel berukuran 8-bit. Jika Anda memanggil metode ini dengan tupel RGB888, nilai grayscale dari tupel RGB888 tersebut diekstrak dan ditetapkan ke lokasi piksel.
Metode Konversi¶
- to_ndarray(dtype: str, buffer: bytes | bytearray | memoryview | None = None) ndarray¶
Mengembalikan objek
ndarrayyang dibuat dari citra. Saat ini hanya berfungsi untuk citra GRAYSCALE atau RGB565.dtypedapat berupab,B, ataufuntuk membuatndarraybertanda 8-bit, tidak bertanda 8-bit, atau titik mengambang 32-bit. Citra GRAYSCALE dikonversi langsung ke objekndarraytidak bertanda 8-bit. Untuk objekndarraybertanda 8-bit, nilai (0:255) dipetakan ke (-127:128). Untuk objekndarrayfloat 32-bit, nilai dipetakan ke (0.0:255.0). Citra RGB565 dikonversi ke objekndarray3-channel dan proses yang sama seperti yang dijelaskan di atas untuk citra GRAYSCALE diterapkan ke setiap channel tergantung padadtype. Perhatikan bahwadtypejuga menerima nilai integer (misalnyaord()) darib,B, danf.bufferjika tidakNoneadalah objekbytearrayyang digunakan sebagai buffer untukndarray. JikaNone, buffer baru dialokasikan di heap untuk menyimpan data citrandarray. Anda dapat menggunakan argumenbufferuntuk mengalokasikanndarraylangsung di buffer yang sudah dialokasikan sebelumnya, sehingga menghemat alokasi heap dan operasi salin.ndarrayyang dikembalikan memiliki bentuk(height, width)untuk citra GRAYSCALE dan(height, width, 3)untuk citra RGB565.
- to_bitmap(x_scale: float = 1.0, y_scale: float = 1.0, roi: Tuple[int, int, int, int] | None = None, rgb_channel: int = -1, alpha: int = 255, color_palette: int | Image | None = None, alpha_palette: Image | None = None, hint: int = 0, transform: ndarray | None = None, copy: bool = False, copy_to_fb: bool = False) Image¶
Mengonversi citra menjadi citra bitmap (1 bit per piksel).
x_scalemengontrol seberapa besar citra yang ditampilkan diskalakan dalam arah x (float). Jika nilai ini negatif, citra akan dibalik secara horizontal. Perhatikan bahwa jikay_scaletidak ditentukan maka akan mengikutix_scaleuntuk mempertahankan rasio aspek.y_scalemengontrol seberapa besar citra yang ditampilkan diskalakan dalam arah y (float). Jika nilai ini negatif, citra akan dibalik secara vertikal. Perhatikan bahwa jikax_scaletidak ditentukan maka akan mengikutix_scaleuntuk mempertahankan rasio aspek.roiadalah tupel persegi panjang wilayah-yang-diminati (x, y, w, h) dari citra sumber yang akan digambar. Ini memungkinkan Anda mengekstrak hanya piksel di ROI untuk diskalakan dan digambar pada citra tujuan.rgb_channeladalah channel RGB (0=R, G=1, B=2) yang akan diekstrak dari citra RGB565 (jika diteruskan) dan ditampilkan pada citra tujuan. Misalnya, jika Anda meneruskanrgb_channel=1ini akan mengekstrak channel hijau dari citra RGB565 sumber dan menggambarnya dalam skala abu-abu pada citra tujuan.alphamengontrol seberapa banyak citra sumber yang dicampurkan ke citra tujuan. Nilai 255 menggambar citra sumber yang buram sementara nilai di bawah 255 menghasilkan pencampuran antara citra sumber dan tujuan. 0 menghasilkan tidak ada modifikasi pada citra tujuan.color_palettejika tidakNonedapat berupa enum palet warna atau citra RGB565 total 256 piksel yang digunakan sebagai tabel pencarian warna pada nilai grayscale dari citra sumber apa pun. Ini diterapkan setelah ekstraksirgb_channeljika digunakan.alpha_palettejika tidakNonedapat berupa citra GRAYSCALE total 256 piksel yang digunakan sebagai palet alpha yang memodulasi nilaialphadari citra sumber yang digambar pada tingkat piksel, memungkinkan Anda mengontrol nilai alpha piksel secara tepat berdasarkan nilai grayscale mereka. Nilai piksel 255 dalam tabel pencarian alpha bersifat buram sedangkan yang kurang dari 255 menjadi lebih transparan hingga 0. Ini diterapkan setelah ekstraksirgb_channeljika digunakan.hintadalah OR logis dari flag yang tercantum di Flag Hint (tidak termasukimage.BLACK_BACKGROUNDyang tidak didukung di sini).transformadalahndarray3x3 yang digunakan untuk melakukan transformasi perspektif pada citra. Saat ini hanya didukung pada OpenMV Cam N6 karena memiliki GPU yang dapat melakukan ini secara hardware.copyjika True, buat salinan mendalam di heap dari citra yang telah dikonversi versus mengonversi citra asli di tempat.copy_to_fbjika True, citra dimuat langsung ke buffer bingkai.copy_to_fbmemiliki prioritas atascopy. Ini tidak memiliki efek khusus jika citra sudah ada di buffer bingkai.Catatan
Citra bitmap seperti citra grayscale dengan hanya dua nilai piksel - 0 dan 1. Selain itu, citra bitmap dikemas sehingga hanya menyimpan 1 bit per piksel menjadikannya sangat kecil. Pustaka citra OpenMV memungkinkan citra bitmap digunakan di semua tempat di mana citra
sensor.GRAYSCALEdansensor.RGB565dapat digunakan. Namun, banyak operasi ketika diterapkan pada citra bitmap tidak masuk akal karena citra bitmap hanya memiliki 2 nilai. OpenMV merekomendasikan menggunakan citra bitmap untuk nilaimaskdalam operasi karena cocok di heap MicroPython dengan mudah. Terakhir, nilai piksel citra bitmap 0 dan 1 diinterpretasikan sebagai hitam dan putih ketika diterapkan pada citrasensor.GRAYSCALEatausensor.RGB565. Pustaka secara otomatis menangani konversi.Mengembalikan objek citra sehingga Anda dapat memanggil metode lain menggunakan notasi
..
- to_grayscale(x_scale: float = 1.0, y_scale: float = 1.0, roi: Tuple[int, int, int, int] | None = None, rgb_channel: int = -1, alpha: int = 255, color_palette: int | Image | None = None, alpha_palette: Image | None = None, hint: int = 0, transform: ndarray | None = None, copy: bool = False, copy_to_fb: bool = False) Image¶
Mengonversi citra menjadi citra grayscale (8-bit per piksel).
x_scalemengontrol seberapa besar citra yang ditampilkan diskalakan dalam arah x (float). Jika nilai ini negatif, citra akan dibalik secara horizontal. Perhatikan bahwa jikay_scaletidak ditentukan maka akan mengikutix_scaleuntuk mempertahankan rasio aspek.y_scalemengontrol seberapa besar citra yang ditampilkan diskalakan dalam arah y (float). Jika nilai ini negatif, citra akan dibalik secara vertikal. Perhatikan bahwa jikax_scaletidak ditentukan maka akan mengikutix_scaleuntuk mempertahankan rasio aspek.roiadalah tupel persegi panjang wilayah-yang-diminati (x, y, w, h) dari citra sumber yang akan digambar. Ini memungkinkan Anda mengekstrak hanya piksel di ROI untuk diskalakan dan digambar pada citra tujuan.rgb_channeladalah channel RGB (0=R, G=1, B=2) yang akan diekstrak dari citra RGB565 (jika diteruskan) dan ditampilkan pada citra tujuan. Misalnya, jika Anda meneruskanrgb_channel=1ini akan mengekstrak channel hijau dari citra RGB565 sumber dan menggambarnya dalam skala abu-abu pada citra tujuan.alphamengontrol seberapa banyak citra sumber yang dicampurkan ke citra tujuan. Nilai 255 menggambar citra sumber yang buram sementara nilai di bawah 255 menghasilkan pencampuran antara citra sumber dan tujuan. 0 menghasilkan tidak ada modifikasi pada citra tujuan.color_palettejika tidakNonedapat berupa enum palet warna atau citra RGB565 total 256 piksel yang digunakan sebagai tabel pencarian warna pada nilai grayscale dari citra sumber apa pun. Ini diterapkan setelah ekstraksirgb_channeljika digunakan.alpha_palettejika tidakNonedapat berupa citra GRAYSCALE total 256 piksel yang digunakan sebagai palet alpha yang memodulasi nilaialphadari citra sumber yang digambar pada tingkat piksel, memungkinkan Anda mengontrol nilai alpha piksel secara tepat berdasarkan nilai grayscale mereka. Nilai piksel 255 dalam tabel pencarian alpha bersifat buram sedangkan yang kurang dari 255 menjadi lebih transparan hingga 0. Ini diterapkan setelah ekstraksirgb_channeljika digunakan.hintadalah OR logis dari flag yang tercantum di Flag Hint (tidak termasukimage.BLACK_BACKGROUNDyang tidak didukung di sini).transformadalahndarray3x3 yang digunakan untuk melakukan transformasi perspektif pada citra. Saat ini hanya didukung pada OpenMV Cam N6 karena memiliki GPU yang dapat melakukan ini secara hardware.copyjika True, buat salinan mendalam di heap dari citra yang telah dikonversi versus mengonversi citra asli di tempat.copy_to_fbjika True, citra dimuat langsung ke buffer bingkai.copy_to_fbmemiliki prioritas atascopy. Ini tidak memiliki efek khusus jika citra sudah ada di buffer bingkai.Mengembalikan objek citra sehingga Anda dapat memanggil metode lain menggunakan notasi
..
- to_rgb565(x_scale: float = 1.0, y_scale: float = 1.0, roi: Tuple[int, int, int, int] | None = None, rgb_channel: int = -1, alpha: int = 255, color_palette: int | Image | None = None, alpha_palette: Image | None = None, hint: int = 0, transform: ndarray | None = None, copy: bool = False, copy_to_fb: bool = False) Image¶
Mengonversi citra menjadi citra RGB565 (16-bit per piksel).
x_scalemengontrol seberapa besar citra yang ditampilkan diskalakan dalam arah x (float). Jika nilai ini negatif, citra akan dibalik secara horizontal. Perhatikan bahwa jikay_scaletidak ditentukan maka akan mengikutix_scaleuntuk mempertahankan rasio aspek.y_scalemengontrol seberapa besar citra yang ditampilkan diskalakan dalam arah y (float). Jika nilai ini negatif, citra akan dibalik secara vertikal. Perhatikan bahwa jikax_scaletidak ditentukan maka akan mengikutix_scaleuntuk mempertahankan rasio aspek.roiadalah tupel persegi panjang wilayah-yang-diminati (x, y, w, h) dari citra sumber yang akan digambar. Ini memungkinkan Anda mengekstrak hanya piksel di ROI untuk diskalakan dan digambar pada citra tujuan.rgb_channeladalah channel RGB (0=R, G=1, B=2) yang akan diekstrak dari citra RGB565 (jika diteruskan) dan ditampilkan pada citra tujuan. Misalnya, jika Anda meneruskanrgb_channel=1ini akan mengekstrak channel hijau dari citra RGB565 sumber dan menggambarnya dalam skala abu-abu pada citra tujuan.alphamengontrol seberapa banyak citra sumber yang dicampurkan ke citra tujuan. Nilai 255 menggambar citra sumber yang buram sementara nilai di bawah 255 menghasilkan pencampuran antara citra sumber dan tujuan. 0 menghasilkan tidak ada modifikasi pada citra tujuan.color_palettejika tidakNonedapat berupa enum palet warna atau citra RGB565 total 256 piksel yang digunakan sebagai tabel pencarian warna pada nilai grayscale dari citra sumber apa pun. Ini diterapkan setelah ekstraksirgb_channeljika digunakan.alpha_palettejika tidakNonedapat berupa citra GRAYSCALE total 256 piksel yang digunakan sebagai palet alpha yang memodulasi nilaialphadari citra sumber yang digambar pada tingkat piksel, memungkinkan Anda mengontrol nilai alpha piksel secara tepat berdasarkan nilai grayscale mereka. Nilai piksel 255 dalam tabel pencarian alpha bersifat buram sedangkan yang kurang dari 255 menjadi lebih transparan hingga 0. Ini diterapkan setelah ekstraksirgb_channeljika digunakan.hintadalah OR logis dari flag yang tercantum di Flag Hint (tidak termasukimage.BLACK_BACKGROUNDyang tidak didukung di sini).transformadalahndarray3x3 yang digunakan untuk melakukan transformasi perspektif pada citra. Saat ini hanya didukung pada OpenMV Cam N6 karena memiliki GPU yang dapat melakukan ini secara hardware.copyjika True, buat salinan mendalam di heap dari citra yang telah dikonversi versus mengonversi citra asli di tempat.copy_to_fbjika True, citra dimuat langsung ke buffer bingkai.copy_to_fbmemiliki prioritas atascopy. Ini tidak memiliki efek khusus jika citra sudah ada di buffer bingkai.Mengembalikan objek citra sehingga Anda dapat memanggil metode lain menggunakan notasi
..
- to_rainbow(x_scale: float = 1.0, y_scale: float = 1.0, roi: Tuple[int, int, int, int] | None = None, rgb_channel: int = -1, alpha: int = 255, color_palette: int | Image = PALETTE_RAINBOW, alpha_palette: Image | None = None, hint: int = 0, transform: ndarray | None = None, copy: bool = False, copy_to_fb: bool = False) Image¶
Mengonversi citra menjadi citra rainbow RGB565 (16-bit per piksel).
x_scalemengontrol seberapa besar citra yang ditampilkan diskalakan dalam arah x (float). Jika nilai ini negatif, citra akan dibalik secara horizontal. Perhatikan bahwa jikay_scaletidak ditentukan maka akan mengikutix_scaleuntuk mempertahankan rasio aspek.y_scalemengontrol seberapa besar citra yang ditampilkan diskalakan dalam arah y (float). Jika nilai ini negatif, citra akan dibalik secara vertikal. Perhatikan bahwa jikax_scaletidak ditentukan maka akan mengikutix_scaleuntuk mempertahankan rasio aspek.roiadalah tupel persegi panjang wilayah-yang-diminati (x, y, w, h) dari citra sumber yang akan digambar. Ini memungkinkan Anda mengekstrak hanya piksel di ROI untuk diskalakan dan digambar pada citra tujuan.rgb_channeladalah channel RGB (0=R, G=1, B=2) yang akan diekstrak dari citra RGB565 (jika diteruskan) dan ditampilkan pada citra tujuan. Misalnya, jika Anda meneruskanrgb_channel=1ini akan mengekstrak channel hijau dari citra RGB565 sumber dan menggambarnya dalam skala abu-abu pada citra tujuan.alphamengontrol seberapa banyak citra sumber yang dicampurkan ke citra tujuan. Nilai 255 menggambar citra sumber yang buram sementara nilai di bawah 255 menghasilkan pencampuran antara citra sumber dan tujuan. 0 menghasilkan tidak ada modifikasi pada citra tujuan.color_palettejika tidakNonedapat berupa enum palet warna atau citra RGB565 total 256 piksel yang digunakan sebagai tabel pencarian warna pada nilai grayscale dari citra sumber apa pun. Ini diterapkan setelah ekstraksirgb_channeljika digunakan.alpha_palettejika tidakNonedapat berupa citra GRAYSCALE total 256 piksel yang digunakan sebagai palet alpha yang memodulasi nilaialphadari citra sumber yang digambar pada tingkat piksel, memungkinkan Anda mengontrol nilai alpha piksel secara tepat berdasarkan nilai grayscale mereka. Nilai piksel 255 dalam tabel pencarian alpha bersifat buram sedangkan yang kurang dari 255 menjadi lebih transparan hingga 0. Ini diterapkan setelah ekstraksirgb_channeljika digunakan.hintadalah OR logis dari flag yang tercantum di Flag Hint (tidak termasukimage.BLACK_BACKGROUNDyang tidak didukung di sini).transformadalahndarray3x3 yang digunakan untuk melakukan transformasi perspektif pada citra. Saat ini hanya didukung pada OpenMV Cam N6 karena memiliki GPU yang dapat melakukan ini secara hardware.copyjika True, buat salinan mendalam di heap dari citra yang telah dikonversi versus mengonversi citra asli di tempat.copy_to_fbjika True, citra dimuat langsung ke buffer bingkai.copy_to_fbmemiliki prioritas atascopy. Ini tidak memiliki efek khusus jika citra sudah ada di buffer bingkai.Mengembalikan objek citra sehingga Anda dapat memanggil metode lain menggunakan notasi
..
- to_ironbow(x_scale: float = 1.0, y_scale: float = 1.0, roi: Tuple[int, int, int, int] | None = None, rgb_channel: int = -1, alpha: int = 255, color_palette: int | Image = PALETTE_IRONBOW, alpha_palette: Image | None = None, hint: int = 0, transform: ndarray | None = None, copy: bool = False, copy_to_fb: bool = False) Image¶
Mengonversi citra menjadi citra ironbow RGB565 (16-bit per piksel).
x_scalemengontrol seberapa besar citra yang ditampilkan diskalakan dalam arah x (float). Jika nilai ini negatif, citra akan dibalik secara horizontal. Perhatikan bahwa jikay_scaletidak ditentukan maka akan mengikutix_scaleuntuk mempertahankan rasio aspek.y_scalemengontrol seberapa besar citra yang ditampilkan diskalakan dalam arah y (float). Jika nilai ini negatif, citra akan dibalik secara vertikal. Perhatikan bahwa jikax_scaletidak ditentukan maka akan mengikutix_scaleuntuk mempertahankan rasio aspek.roiadalah tupel persegi panjang wilayah-yang-diminati (x, y, w, h) dari citra sumber yang akan digambar. Ini memungkinkan Anda mengekstrak hanya piksel di ROI untuk diskalakan dan digambar pada citra tujuan.rgb_channeladalah channel RGB (0=R, G=1, B=2) yang akan diekstrak dari citra RGB565 (jika diteruskan) dan ditampilkan pada citra tujuan. Misalnya, jika Anda meneruskanrgb_channel=1ini akan mengekstrak channel hijau dari citra RGB565 sumber dan menggambarnya dalam skala abu-abu pada citra tujuan.alphamengontrol seberapa banyak citra sumber yang dicampurkan ke citra tujuan. Nilai 255 menggambar citra sumber yang buram sementara nilai di bawah 255 menghasilkan pencampuran antara citra sumber dan tujuan. 0 menghasilkan tidak ada modifikasi pada citra tujuan.color_palettejika tidakNonedapat berupa enum palet warna atau citra RGB565 total 256 piksel yang digunakan sebagai tabel pencarian warna pada nilai grayscale dari citra sumber apa pun. Ini diterapkan setelah ekstraksirgb_channeljika digunakan.alpha_palettejika tidakNonedapat berupa citra GRAYSCALE total 256 piksel yang digunakan sebagai palet alpha yang memodulasi nilaialphadari citra sumber yang digambar pada tingkat piksel, memungkinkan Anda mengontrol nilai alpha piksel secara tepat berdasarkan nilai grayscale mereka. Nilai piksel 255 dalam tabel pencarian alpha bersifat buram sedangkan yang kurang dari 255 menjadi lebih transparan hingga 0. Ini diterapkan setelah ekstraksirgb_channeljika digunakan.hintadalah OR logis dari flag yang tercantum di Flag Hint (tidak termasukimage.BLACK_BACKGROUNDyang tidak didukung di sini).transformadalahndarray3x3 yang digunakan untuk melakukan transformasi perspektif pada citra. Saat ini hanya didukung pada OpenMV Cam N6 karena memiliki GPU yang dapat melakukan ini secara hardware.copyjika True, buat salinan mendalam di heap dari citra yang telah dikonversi versus mengonversi citra asli di tempat.copy_to_fbjika True, citra dimuat langsung ke buffer bingkai.copy_to_fbmemiliki prioritas atascopy. Ini tidak memiliki efek khusus jika citra sudah ada di buffer bingkai.Mengembalikan objek citra sehingga Anda dapat memanggil metode lain menggunakan notasi
..
- to_depth(x_scale: float = 1.0, y_scale: float = 1.0, roi: Tuple[int, int, int, int] | None = None, rgb_channel: int = -1, alpha: int = 255, color_palette: int | Image = PALETTE_IRONBOW, alpha_palette: Image | None = None, hint: int = 0, transform: ndarray | None = None, copy: bool = False, copy_to_fb: bool = False) Image¶
Mengonversi citra menjadi Citra Kedalaman RGB565 (16-bit per piksel).
x_scalemengontrol seberapa besar citra yang ditampilkan diskalakan dalam arah x (float). Jika nilai ini negatif, citra akan dibalik secara horizontal. Perhatikan bahwa jikay_scaletidak ditentukan maka akan mengikutix_scaleuntuk mempertahankan rasio aspek.y_scalemengontrol seberapa besar citra yang ditampilkan diskalakan dalam arah y (float). Jika nilai ini negatif, citra akan dibalik secara vertikal. Perhatikan bahwa jikax_scaletidak ditentukan maka akan mengikutix_scaleuntuk mempertahankan rasio aspek.roiadalah tupel persegi panjang wilayah-yang-diminati (x, y, w, h) dari citra sumber yang akan digambar. Ini memungkinkan Anda mengekstrak hanya piksel di ROI untuk diskalakan dan digambar pada citra tujuan.rgb_channeladalah channel RGB (0=R, G=1, B=2) yang akan diekstrak dari citra RGB565 (jika diteruskan) dan ditampilkan pada citra tujuan. Misalnya, jika Anda meneruskanrgb_channel=1ini akan mengekstrak channel hijau dari citra RGB565 sumber dan menggambarnya dalam skala abu-abu pada citra tujuan.alphamengontrol seberapa banyak citra sumber yang dicampurkan ke citra tujuan. Nilai 255 menggambar citra sumber yang buram sementara nilai di bawah 255 menghasilkan pencampuran antara citra sumber dan tujuan. 0 menghasilkan tidak ada modifikasi pada citra tujuan.color_palettejika tidakNonedapat berupaimage.PALETTE_DEPTHatau citra RGB565 total 256 piksel yang digunakan sebagai tabel pencarian warna pada nilai grayscale dari citra sumber apa pun. Ini diterapkan setelah ekstraksirgb_channeljika digunakan.alpha_palettejika tidakNonedapat berupa citra GRAYSCALE total 256 piksel yang digunakan sebagai palet alpha yang memodulasi nilaialphadari citra sumber yang digambar pada tingkat piksel, memungkinkan Anda mengontrol nilai alpha piksel secara tepat berdasarkan nilai grayscale mereka. Nilai piksel 255 dalam tabel pencarian alpha bersifat buram sedangkan yang kurang dari 255 menjadi lebih transparan hingga 0. Ini diterapkan setelah ekstraksirgb_channeljika digunakan.hintadalah OR logis dari flag yang tercantum di Flag Hint (tidak termasukimage.BLACK_BACKGROUNDyang tidak didukung di sini).transformadalahndarray3x3 yang digunakan untuk melakukan transformasi perspektif pada citra. Saat ini hanya didukung pada OpenMV Cam N6 karena memiliki GPU yang dapat melakukan ini secara hardware.copyjika True, buat salinan mendalam di heap dari citra yang telah dikonversi versus mengonversi citra asli di tempat.copy_to_fbjika True, citra dimuat langsung ke buffer bingkai.copy_to_fbmemiliki prioritas atascopy. Ini tidak memiliki efek khusus jika citra sudah ada di buffer bingkai.Mengembalikan objek citra sehingga Anda dapat memanggil metode lain menggunakan notasi
..
- to_evt_dark(x_scale: float = 1.0, y_scale: float = 1.0, roi: Tuple[int, int, int, int] | None = None, rgb_channel: int = -1, alpha: int = 255, color_palette: int | Image = PALETTE_IRONBOW, alpha_palette: Image | None = None, hint: int = 0, transform: ndarray | None = None, copy: bool = False, copy_to_fb: bool = False) Image¶
Mengonversi citra menjadi Citra Peristiwa Gelap RGB565 (16-bit per piksel).
x_scalemengontrol seberapa besar citra yang ditampilkan diskalakan dalam arah x (float). Jika nilai ini negatif, citra akan dibalik secara horizontal. Perhatikan bahwa jikay_scaletidak ditentukan maka akan mengikutix_scaleuntuk mempertahankan rasio aspek.y_scalemengontrol seberapa besar citra yang ditampilkan diskalakan dalam arah y (float). Jika nilai ini negatif, citra akan dibalik secara vertikal. Perhatikan bahwa jikax_scaletidak ditentukan maka akan mengikutix_scaleuntuk mempertahankan rasio aspek.roiadalah tupel persegi panjang wilayah-yang-diminati (x, y, w, h) dari citra sumber yang akan digambar. Ini memungkinkan Anda mengekstrak hanya piksel di ROI untuk diskalakan dan digambar pada citra tujuan.rgb_channeladalah channel RGB (0=R, G=1, B=2) yang akan diekstrak dari citra RGB565 (jika diteruskan) dan ditampilkan pada citra tujuan. Misalnya, jika Anda meneruskanrgb_channel=1ini akan mengekstrak channel hijau dari citra RGB565 sumber dan menggambarnya dalam skala abu-abu pada citra tujuan.alphamengontrol seberapa banyak citra sumber yang dicampurkan ke citra tujuan. Nilai 255 menggambar citra sumber yang buram sementara nilai di bawah 255 menghasilkan pencampuran antara citra sumber dan tujuan. 0 menghasilkan tidak ada modifikasi pada citra tujuan.color_palettejika tidakNonedapat berupa enum palet warna atau citra RGB565 total 256 piksel yang digunakan sebagai tabel pencarian warna pada nilai grayscale dari citra sumber apa pun. Ini diterapkan setelah ekstraksirgb_channeljika digunakan.alpha_palettejika tidakNonedapat berupa citra GRAYSCALE total 256 piksel yang digunakan sebagai palet alpha yang memodulasi nilaialphadari citra sumber yang digambar pada tingkat piksel, memungkinkan Anda mengontrol nilai alpha piksel secara tepat berdasarkan nilai grayscale mereka. Nilai piksel 255 dalam tabel pencarian alpha bersifat buram sedangkan yang kurang dari 255 menjadi lebih transparan hingga 0. Ini diterapkan setelah ekstraksirgb_channeljika digunakan.hintadalah OR logis dari flag yang tercantum di Flag Hint (tidak termasukimage.BLACK_BACKGROUNDyang tidak didukung di sini).transformadalahndarray3x3 yang digunakan untuk melakukan transformasi perspektif pada citra. Saat ini hanya didukung pada OpenMV Cam N6 karena memiliki GPU yang dapat melakukan ini secara hardware.copyjika True, buat salinan mendalam di heap dari citra yang telah dikonversi versus mengonversi citra asli di tempat.copy_to_fbjika True, citra dimuat langsung ke buffer bingkai.copy_to_fbmemiliki prioritas atascopy. Ini tidak memiliki efek khusus jika citra sudah ada di buffer bingkai.Mengembalikan objek citra sehingga Anda dapat memanggil metode lain menggunakan notasi
..
- to_evt_light(x_scale: float = 1.0, y_scale: float = 1.0, roi: Tuple[int, int, int, int] | None = None, rgb_channel: int = -1, alpha: int = 255, color_palette: int | Image = PALETTE_IRONBOW, alpha_palette: Image | None = None, hint: int = 0, transform: ndarray | None = None, copy: bool = False, copy_to_fb: bool = False) Image¶
Mengonversi citra menjadi Citra Peristiwa Terang RGB565 (16-bit per piksel).
x_scalemengontrol seberapa besar citra yang ditampilkan diskalakan dalam arah x (float). Jika nilai ini negatif, citra akan dibalik secara horizontal. Perhatikan bahwa jikay_scaletidak ditentukan maka akan mengikutix_scaleuntuk mempertahankan rasio aspek.y_scalemengontrol seberapa besar citra yang ditampilkan diskalakan dalam arah y (float). Jika nilai ini negatif, citra akan dibalik secara vertikal. Perhatikan bahwa jikax_scaletidak ditentukan maka akan mengikutix_scaleuntuk mempertahankan rasio aspek.roiadalah tupel persegi panjang wilayah-yang-diminati (x, y, w, h) dari citra sumber yang akan digambar. Ini memungkinkan Anda mengekstrak hanya piksel di ROI untuk diskalakan dan digambar pada citra tujuan.rgb_channeladalah channel RGB (0=R, G=1, B=2) yang akan diekstrak dari citra RGB565 (jika diteruskan) dan ditampilkan pada citra tujuan. Misalnya, jika Anda meneruskanrgb_channel=1ini akan mengekstrak channel hijau dari citra RGB565 sumber dan menggambarnya dalam skala abu-abu pada citra tujuan.alphamengontrol seberapa banyak citra sumber yang dicampurkan ke citra tujuan. Nilai 255 menggambar citra sumber yang buram sementara nilai di bawah 255 menghasilkan pencampuran antara citra sumber dan tujuan. 0 menghasilkan tidak ada modifikasi pada citra tujuan.color_palettejika tidakNonedapat berupa enum palet warna atau citra RGB565 total 256 piksel yang digunakan sebagai tabel pencarian warna pada nilai grayscale dari citra sumber apa pun. Ini diterapkan setelah ekstraksirgb_channeljika digunakan.alpha_palettejika tidakNonedapat berupa citra GRAYSCALE total 256 piksel yang digunakan sebagai palet alpha yang memodulasi nilaialphadari citra sumber yang digambar pada tingkat piksel, memungkinkan Anda mengontrol nilai alpha piksel secara tepat berdasarkan nilai grayscale mereka. Nilai piksel 255 dalam tabel pencarian alpha bersifat buram sedangkan yang kurang dari 255 menjadi lebih transparan hingga 0. Ini diterapkan setelah ekstraksirgb_channeljika digunakan.hintadalah OR logis dari flag yang tercantum di Flag Hint (tidak termasukimage.BLACK_BACKGROUNDyang tidak didukung di sini).transformadalahndarray3x3 yang digunakan untuk melakukan transformasi perspektif pada citra. Saat ini hanya didukung pada OpenMV Cam N6 karena memiliki GPU yang dapat melakukan ini secara hardware.copyjika True, buat salinan mendalam di heap dari citra yang telah dikonversi versus mengonversi citra asli di tempat.copy_to_fbjika True, citra dimuat langsung ke buffer bingkai.copy_to_fbmemiliki prioritas atascopy. Ini tidak memiliki efek khusus jika citra sudah ada di buffer bingkai.Mengembalikan objek citra sehingga Anda dapat memanggil metode lain menggunakan notasi
..
- to_jpeg(x_scale: float = 1.0, y_scale: float = 1.0, roi: Tuple[int, int, int, int] | None = None, rgb_channel: int = -1, alpha: int = 255, color_palette: int | Image | None = None, alpha_palette: Image | None = None, hint: int = 0, transform: ndarray | None = None, copy: bool = False, copy_to_fb: bool = False, quality: int = 90, subsampling: int = 0) Image¶
Mengonversi citra menjadi citra JPEG.
x_scalemengontrol seberapa besar citra yang ditampilkan diskalakan dalam arah x (float). Jika nilai ini negatif, citra akan dibalik secara horizontal. Perhatikan bahwa jikay_scaletidak ditentukan maka akan mengikutix_scaleuntuk mempertahankan rasio aspek.y_scalemengontrol seberapa besar citra yang ditampilkan diskalakan dalam arah y (float). Jika nilai ini negatif, citra akan dibalik secara vertikal. Perhatikan bahwa jikax_scaletidak ditentukan maka akan mengikutix_scaleuntuk mempertahankan rasio aspek.roiadalah tupel persegi panjang wilayah-yang-diminati (x, y, w, h) dari citra sumber yang akan digambar. Ini memungkinkan Anda mengekstrak hanya piksel di ROI untuk diskalakan dan digambar pada citra tujuan.rgb_channeladalah channel RGB (0=R, G=1, B=2) yang akan diekstrak dari citra RGB565 (jika diteruskan) dan ditampilkan pada citra tujuan. Misalnya, jika Anda meneruskanrgb_channel=1ini akan mengekstrak channel hijau dari citra RGB565 sumber dan menggambarnya dalam skala abu-abu pada citra tujuan.alphamengontrol seberapa banyak citra sumber yang dicampurkan ke citra tujuan. Nilai 255 menggambar citra sumber yang buram sementara nilai di bawah 255 menghasilkan pencampuran antara citra sumber dan tujuan. 0 menghasilkan tidak ada modifikasi pada citra tujuan.color_palettejika tidakNonedapat berupa enum palet warna atau citra RGB565 total 256 piksel yang digunakan sebagai tabel pencarian warna pada nilai grayscale dari citra sumber apa pun. Ini diterapkan setelah ekstraksirgb_channeljika digunakan.alpha_palettejika tidakNonedapat berupa citra GRAYSCALE total 256 piksel yang digunakan sebagai palet alpha yang memodulasi nilaialphadari citra sumber yang digambar pada tingkat piksel, memungkinkan Anda mengontrol nilai alpha piksel secara tepat berdasarkan nilai grayscale mereka. Nilai piksel 255 dalam tabel pencarian alpha bersifat buram sedangkan yang kurang dari 255 menjadi lebih transparan hingga 0. Ini diterapkan setelah ekstraksirgb_channeljika digunakan.hintadalah OR logis dari flag yang tercantum di Flag Hint (tidak termasukimage.BLACK_BACKGROUNDyang tidak didukung di sini).transformadalahndarray3x3 yang digunakan untuk melakukan transformasi perspektif pada citra. Saat ini hanya didukung pada OpenMV Cam N6 karena memiliki GPU yang dapat melakukan ini secara hardware.copyjika True, buat salinan mendalam di heap dari citra yang telah dikonversi versus mengonversi citra asli di tempat.copy_to_fbjika True, citra dimuat langsung ke buffer bingkai.copy_to_fbmemiliki prioritas atascopy. Ini tidak memiliki efek khusus jika citra sudah ada di buffer bingkai.qualitymengontrol kualitas kompresi citra jpeg. Nilainya bisa antara 0 dan 100.subsamplingdapat berupa:image.JPEG_SUBSAMPLING_AUTO: Gunakan subsampling terbaik untuk citra berdasarkan kualitas.image.JPEG_SUBSAMPLING_444: Gunakan subsampling 4:4:4.image.JPEG_SUBSAMPLING_422: Gunakan subsampling 4:2:2.image.JPEG_SUBSAMPLING_420: Gunakan subsampling 4:2:0.
Mengembalikan objek citra sehingga Anda dapat memanggil metode lain menggunakan notasi
..
- to_png(x_scale: float = 1.0, y_scale: float = 1.0, roi: Tuple[int, int, int, int] | None = None, rgb_channel: int = -1, alpha: int = 255, color_palette: int | Image | None = None, alpha_palette: Image | None = None, hint: int = 0, transform: ndarray | None = None, copy: bool = False, copy_to_fb: bool = False) Image¶
Mengonversi citra menjadi citra PNG.
x_scalemengontrol seberapa besar citra yang ditampilkan diskalakan dalam arah x (float). Jika nilai ini negatif, citra akan dibalik secara horizontal. Perhatikan bahwa jikay_scaletidak ditentukan maka akan mengikutix_scaleuntuk mempertahankan rasio aspek.y_scalemengontrol seberapa besar citra yang ditampilkan diskalakan dalam arah y (float). Jika nilai ini negatif, citra akan dibalik secara vertikal. Perhatikan bahwa jikax_scaletidak ditentukan maka akan mengikutix_scaleuntuk mempertahankan rasio aspek.roiadalah tupel persegi panjang wilayah-yang-diminati (x, y, w, h) dari citra sumber yang akan digambar. Ini memungkinkan Anda mengekstrak hanya piksel di ROI untuk diskalakan dan digambar pada citra tujuan.rgb_channeladalah channel RGB (0=R, G=1, B=2) yang akan diekstrak dari citra RGB565 (jika diteruskan) dan ditampilkan pada citra tujuan. Misalnya, jika Anda meneruskanrgb_channel=1ini akan mengekstrak channel hijau dari citra RGB565 sumber dan menggambarnya dalam skala abu-abu pada citra tujuan.alphamengontrol seberapa banyak citra sumber yang dicampurkan ke citra tujuan. Nilai 255 menggambar citra sumber yang buram sementara nilai di bawah 255 menghasilkan pencampuran antara citra sumber dan tujuan. 0 menghasilkan tidak ada modifikasi pada citra tujuan.color_palettejika tidakNonedapat berupa enum palet warna atau citra RGB565 total 256 piksel yang digunakan sebagai tabel pencarian warna pada nilai grayscale dari citra sumber apa pun. Ini diterapkan setelah ekstraksirgb_channeljika digunakan.alpha_palettejika tidakNonedapat berupa citra GRAYSCALE total 256 piksel yang digunakan sebagai palet alpha yang memodulasi nilaialphadari citra sumber yang digambar pada tingkat piksel, memungkinkan Anda mengontrol nilai alpha piksel secara tepat berdasarkan nilai grayscale mereka. Nilai piksel 255 dalam tabel pencarian alpha bersifat buram sedangkan yang kurang dari 255 menjadi lebih transparan hingga 0. Ini diterapkan setelah ekstraksirgb_channeljika digunakan.hintadalah OR logis dari flag yang tercantum di Flag Hint (tidak termasukimage.BLACK_BACKGROUNDyang tidak didukung di sini).transformadalahndarray3x3 yang digunakan untuk melakukan transformasi perspektif pada citra. Saat ini hanya didukung pada OpenMV Cam N6 karena memiliki GPU yang dapat melakukan ini secara hardware.copyjika True, buat salinan mendalam di heap dari citra yang telah dikonversi versus mengonversi citra asli di tempat.copy_to_fbjika True, citra dimuat langsung ke buffer bingkai.copy_to_fbmemiliki prioritas atascopy. Ini tidak memiliki efek khusus jika citra sudah ada di buffer bingkai.Mengembalikan objek citra sehingga Anda dapat memanggil metode lain menggunakan notasi
..
- compress(x_scale: float = 1.0, y_scale: float = 1.0, roi: Tuple[int, int, int, int] | None = None, rgb_channel: int = -1, alpha: int = 255, color_palette: int | Image | None = None, alpha_palette: Image | None = None, hint: int = 0, transform: ndarray | None = None, copy: bool = False, copy_to_fb: bool = False, quality: int = 90, subsampling: int = 0) Image¶
Mengonversi citra menjadi citra JPEG.
x_scalemengontrol seberapa besar citra yang ditampilkan diskalakan dalam arah x (float). Jika nilai ini negatif, citra akan dibalik secara horizontal. Perhatikan bahwa jikay_scaletidak ditentukan maka akan mengikutix_scaleuntuk mempertahankan rasio aspek.y_scalemengontrol seberapa besar citra yang ditampilkan diskalakan dalam arah y (float). Jika nilai ini negatif, citra akan dibalik secara vertikal. Perhatikan bahwa jikax_scaletidak ditentukan maka akan mengikutix_scaleuntuk mempertahankan rasio aspek.roiadalah tupel persegi panjang wilayah-yang-diminati (x, y, w, h) dari citra sumber yang akan digambar. Ini memungkinkan Anda mengekstrak hanya piksel di ROI untuk diskalakan dan digambar pada citra tujuan.rgb_channeladalah channel RGB (0=R, G=1, B=2) yang akan diekstrak dari citra RGB565 (jika diteruskan) dan ditampilkan pada citra tujuan. Misalnya, jika Anda meneruskanrgb_channel=1ini akan mengekstrak channel hijau dari citra RGB565 sumber dan menggambarnya dalam skala abu-abu pada citra tujuan.alphamengontrol seberapa banyak citra sumber yang dicampurkan ke citra tujuan. Nilai 255 menggambar citra sumber yang buram sementara nilai di bawah 255 menghasilkan pencampuran antara citra sumber dan tujuan. 0 menghasilkan tidak ada modifikasi pada citra tujuan.color_palettejika tidakNonedapat berupa enum palet warna atau citra RGB565 total 256 piksel yang digunakan sebagai tabel pencarian warna pada nilai grayscale dari citra sumber apa pun. Ini diterapkan setelah ekstraksirgb_channeljika digunakan.alpha_palettejika tidakNonedapat berupa citra GRAYSCALE total 256 piksel yang digunakan sebagai palet alpha yang memodulasi nilaialphadari citra sumber yang digambar pada tingkat piksel, memungkinkan Anda mengontrol nilai alpha piksel secara tepat berdasarkan nilai grayscale mereka. Nilai piksel 255 dalam tabel pencarian alpha bersifat buram sedangkan yang kurang dari 255 menjadi lebih transparan hingga 0. Ini diterapkan setelah ekstraksirgb_channeljika digunakan.hintadalah OR logis dari flag yang tercantum di Flag Hint (tidak termasukimage.BLACK_BACKGROUNDyang tidak didukung di sini).transformadalahndarray3x3 yang digunakan untuk melakukan transformasi perspektif pada citra. Saat ini hanya didukung pada OpenMV Cam N6 karena memiliki GPU yang dapat melakukan ini secara hardware.copyjika True, buat salinan mendalam di heap dari citra yang telah dikonversi versus mengonversi citra asli di tempat.copy_to_fbjika True, citra dimuat langsung ke buffer bingkai.copy_to_fbmemiliki prioritas atascopy. Ini tidak memiliki efek khusus jika citra sudah ada di buffer bingkai.qualitymengontrol kualitas kompresi citra jpeg. Nilainya bisa antara 0 dan 100.subsamplingdapat berupa:image.JPEG_SUBSAMPLING_AUTO: Gunakan subsampling terbaik untuk citra berdasarkan kualitas.image.JPEG_SUBSAMPLING_444: Gunakan subsampling 4:4:4.image.JPEG_SUBSAMPLING_422: Gunakan subsampling 4:2:2.image.JPEG_SUBSAMPLING_420: Gunakan subsampling 4:2:0.
Mengembalikan objek citra sehingga Anda dapat memanggil metode lain menggunakan notasi
..Catatan
Image.compressadalah alias untukImage.to_jpeg.
- copy(x_scale: float = 1.0, y_scale: float = 1.0, roi: Tuple[int, int, int, int] | None = None, rgb_channel: int = -1, alpha: int = 255, color_palette: int | Image | None = None, alpha_palette: Image | None = None, hint: int = 0, transform: ndarray | None = None, copy_to_fb: bool = False) Image¶
Membuat salinan mendalam dari objek citra.
x_scalemengontrol seberapa besar citra yang ditampilkan diskalakan dalam arah x (float). Jika nilai ini negatif, citra akan dibalik secara horizontal. Perhatikan bahwa jikay_scaletidak ditentukan maka akan mengikutix_scaleuntuk mempertahankan rasio aspek.y_scalemengontrol seberapa besar citra yang ditampilkan diskalakan dalam arah y (float). Jika nilai ini negatif, citra akan dibalik secara vertikal. Perhatikan bahwa jikax_scaletidak ditentukan maka akan mengikutix_scaleuntuk mempertahankan rasio aspek.roiadalah tupel persegi panjang wilayah-yang-diminati (x, y, w, h) dari citra sumber yang akan digambar. Ini memungkinkan Anda mengekstrak hanya piksel di ROI untuk diskalakan dan digambar pada citra tujuan.rgb_channeladalah channel RGB (0=R, G=1, B=2) yang akan diekstrak dari citra RGB565 (jika diteruskan) dan ditampilkan pada citra tujuan. Misalnya, jika Anda meneruskanrgb_channel=1ini akan mengekstrak channel hijau dari citra RGB565 sumber dan menggambarnya dalam skala abu-abu pada citra tujuan.alphamengontrol seberapa banyak citra sumber yang dicampurkan ke citra tujuan. Nilai 255 menggambar citra sumber yang buram sementara nilai di bawah 255 menghasilkan pencampuran antara citra sumber dan tujuan. 0 menghasilkan tidak ada modifikasi pada citra tujuan.color_palettejika tidakNonedapat berupa enum palet warna atau citra RGB565 total 256 piksel yang digunakan sebagai tabel pencarian warna pada nilai grayscale dari citra sumber apa pun. Ini diterapkan setelah ekstraksirgb_channeljika digunakan.alpha_palettejika tidakNonedapat berupa citra GRAYSCALE total 256 piksel yang digunakan sebagai palet alpha yang memodulasi nilaialphadari citra sumber yang digambar pada tingkat piksel, memungkinkan Anda mengontrol nilai alpha piksel secara tepat berdasarkan nilai grayscale mereka. Nilai piksel 255 dalam tabel pencarian alpha bersifat buram sedangkan yang kurang dari 255 menjadi lebih transparan hingga 0. Ini diterapkan setelah ekstraksirgb_channeljika digunakan.hintadalah OR logis dari flag yang tercantum di Flag Hint (tidak termasukimage.BLACK_BACKGROUNDyang tidak didukung di sini).transformadalahndarray3x3 yang digunakan untuk melakukan transformasi perspektif pada citra. Saat ini hanya didukung pada OpenMV Cam N6 karena memiliki GPU yang dapat melakukan ini secara hardware.copy_to_fbjika True, citra dimuat langsung ke buffer bingkai. Ini tidak memiliki efek khusus jika citra sudah ada di buffer bingkai.Mengembalikan objek citra sehingga Anda dapat memanggil metode lain menggunakan notasi
..
- crop(x_scale: float = 1.0, y_scale: float = 1.0, roi: Tuple[int, int, int, int] | None = None, rgb_channel: int = -1, alpha: int = 255, color_palette: int | Image | None = None, alpha_palette: Image | None = None, hint: int = 0, transform: ndarray | None = None, copy: bool = False, copy_to_fb: bool = False) Image¶
Memodifikasi citra di tempat tanpa mengubah tipe citra yang mendasarinya.
x_scalemengontrol seberapa besar citra yang ditampilkan diskalakan dalam arah x (float). Jika nilai ini negatif, citra akan dibalik secara horizontal. Perhatikan bahwa jikay_scaletidak ditentukan maka akan mengikutix_scaleuntuk mempertahankan rasio aspek.y_scalemengontrol seberapa besar citra yang ditampilkan diskalakan dalam arah y (float). Jika nilai ini negatif, citra akan dibalik secara vertikal. Perhatikan bahwa jikax_scaletidak ditentukan maka akan mengikutix_scaleuntuk mempertahankan rasio aspek.roiadalah tupel persegi panjang wilayah-yang-diminati (x, y, w, h) dari citra sumber yang akan digambar. Ini memungkinkan Anda mengekstrak hanya piksel di ROI untuk diskalakan dan digambar pada citra tujuan.rgb_channeladalah channel RGB (0=R, G=1, B=2) yang akan diekstrak dari citra RGB565 (jika diteruskan) dan ditampilkan pada citra tujuan. Misalnya, jika Anda meneruskanrgb_channel=1ini akan mengekstrak channel hijau dari citra RGB565 sumber dan menggambarnya dalam skala abu-abu pada citra tujuan.alphamengontrol seberapa banyak citra sumber yang dicampurkan ke citra tujuan. Nilai 255 menggambar citra sumber yang buram sementara nilai di bawah 255 menghasilkan pencampuran antara citra sumber dan tujuan. 0 menghasilkan tidak ada modifikasi pada citra tujuan.color_palettejika tidakNonedapat berupa enum palet warna atau citra RGB565 total 256 piksel yang digunakan sebagai tabel pencarian warna pada nilai grayscale dari citra sumber apa pun. Ini diterapkan setelah ekstraksirgb_channeljika digunakan.alpha_palettejika tidakNonedapat berupa citra GRAYSCALE total 256 piksel yang digunakan sebagai palet alpha yang memodulasi nilaialphadari citra sumber yang digambar pada tingkat piksel, memungkinkan Anda mengontrol nilai alpha piksel secara tepat berdasarkan nilai grayscale mereka. Nilai piksel 255 dalam tabel pencarian alpha bersifat buram sedangkan yang kurang dari 255 menjadi lebih transparan hingga 0. Ini diterapkan setelah ekstraksirgb_channeljika digunakan.hintadalah OR logis dari flag yang tercantum di Flag Hint (tidak termasukimage.BLACK_BACKGROUNDyang tidak didukung di sini).transformadalahndarray3x3 yang digunakan untuk melakukan transformasi perspektif pada citra. Saat ini hanya didukung pada OpenMV Cam N6 karena memiliki GPU yang dapat melakukan ini secara hardware.copyjika True, buat salinan mendalam di heap dari citra yang telah dikonversi versus mengonversi citra asli di tempat.copy_to_fbjika True, citra dimuat langsung ke buffer bingkai.copy_to_fbmemiliki prioritas atascopy. Ini tidak memiliki efek khusus jika citra sudah ada di buffer bingkai.Mengembalikan objek citra sehingga Anda dapat memanggil metode lain menggunakan notasi
..
- scale(x_scale: float = 1.0, y_scale: float = 1.0, roi: Tuple[int, int, int, int] | None = None, rgb_channel: int = -1, alpha: int = 255, color_palette: int | Image | None = None, alpha_palette: Image | None = None, hint: int = 0, transform: ndarray | None = None, copy: bool = False, copy_to_fb: bool = False) Image¶
Memodifikasi citra di tempat tanpa mengubah tipe citra yang mendasarinya.
x_scalemengontrol seberapa besar citra yang ditampilkan diskalakan dalam arah x (float). Jika nilai ini negatif, citra akan dibalik secara horizontal. Perhatikan bahwa jikay_scaletidak ditentukan maka akan mengikutix_scaleuntuk mempertahankan rasio aspek.y_scalemengontrol seberapa besar citra yang ditampilkan diskalakan dalam arah y (float). Jika nilai ini negatif, citra akan dibalik secara vertikal. Perhatikan bahwa jikax_scaletidak ditentukan maka akan mengikutix_scaleuntuk mempertahankan rasio aspek.roiadalah tupel persegi panjang wilayah-yang-diminati (x, y, w, h) dari citra sumber yang akan digambar. Ini memungkinkan Anda mengekstrak hanya piksel di ROI untuk diskalakan dan digambar pada citra tujuan.rgb_channeladalah channel RGB (0=R, G=1, B=2) yang akan diekstrak dari citra RGB565 (jika diteruskan) dan ditampilkan pada citra tujuan. Misalnya, jika Anda meneruskanrgb_channel=1ini akan mengekstrak channel hijau dari citra RGB565 sumber dan menggambarnya dalam skala abu-abu pada citra tujuan.alphamengontrol seberapa banyak citra sumber yang dicampurkan ke citra tujuan. Nilai 255 menggambar citra sumber yang buram sementara nilai di bawah 255 menghasilkan pencampuran antara citra sumber dan tujuan. 0 menghasilkan tidak ada modifikasi pada citra tujuan.color_palettejika tidakNonedapat berupa enum palet warna atau citra RGB565 total 256 piksel yang digunakan sebagai tabel pencarian warna pada nilai grayscale dari citra sumber apa pun. Ini diterapkan setelah ekstraksirgb_channeljika digunakan.alpha_palettejika tidakNonedapat berupa citra GRAYSCALE total 256 piksel yang digunakan sebagai palet alpha yang memodulasi nilaialphadari citra sumber yang digambar pada tingkat piksel, memungkinkan Anda mengontrol nilai alpha piksel secara tepat berdasarkan nilai grayscale mereka. Nilai piksel 255 dalam tabel pencarian alpha bersifat buram sedangkan yang kurang dari 255 menjadi lebih transparan hingga 0. Ini diterapkan setelah ekstraksirgb_channeljika digunakan.hintadalah OR logis dari flag yang tercantum di Flag Hint (tidak termasukimage.BLACK_BACKGROUNDyang tidak didukung di sini).transformadalahndarray3x3 yang digunakan untuk melakukan transformasi perspektif pada citra. Saat ini hanya didukung pada OpenMV Cam N6 karena memiliki GPU yang dapat melakukan ini secara hardware.copyjika True, buat salinan mendalam di heap dari citra yang telah dikonversi versus mengonversi citra asli di tempat.copy_to_fbjika True, citra dimuat langsung ke buffer bingkai.copy_to_fbmemiliki prioritas atascopy. Ini tidak memiliki efek khusus jika citra sudah ada di buffer bingkai.Mengembalikan objek citra sehingga Anda dapat memanggil metode lain menggunakan notasi
..Catatan
Image.scaleadalah alias untukImage.crop.
- save(path: str, roi: Tuple[int, int, int, int] | None = None, quality: int = 50) Image¶
Menyimpan salinan citra ke sistem file di
path.Mendukung file citra bmp/pgm/ppm/jpg/jpeg. Perhatikan bahwa Anda tidak dapat menyimpan citra terkompresi jpeg ke format yang tidak terkompresi.
roiadalah persegi panjang wilayah-yang-diminati (x, y, w, h) untuk disimpan. Jika tidak ditentukan, sama dengan persegi panjang citra yang menyalin seluruh citra. Argumen ini tidak berlaku untuk citra JPEG.qualityadalah kualitas kompresi jpeg yang digunakan untuk menyimpan citra ke format jpeg jika citra belum terkompresi (0-100) (int).Mengembalikan objek citra sehingga Anda dapat memanggil metode lain menggunakan notasi
..
Metode Menggambar¶
- clear(mask: Image | None = None) Image¶
Mengatur semua piksel dalam citra ke nol (sangat cepat).
maskadalah citra lain yang digunakan sebagai mask tingkat piksel untuk operasi. Mask harus berupa citra dengan hanya piksel hitam atau putih dan harus berukuran sama dengan citra yang dioperasikan. Hanya piksel yang diatur dalam mask yang dimodifikasi.Mengembalikan objek citra sehingga Anda dapat memanggil metode lain menggunakan notasi
..Tidak didukung pada citra terkompresi.
- draw_line(x0: int, y0: int, x1: int, y1: int, color: int | Tuple[int, int, int] | None = None, thickness: int = 1) Image¶
Menggambar garis dari (x0, y0) ke (x1, y1) pada citra. Anda dapat meneruskan x0, y0, x1, y1 secara terpisah atau sebagai tupel (x0, y0, x1, y1).
coloradalah tupel RGB888 untuk citra Grayscale atau RGB565. Defaultnya putih. Namun, Anda juga dapat meneruskan nilai piksel yang mendasarinya (0-255) untuk citra grayscale atau nilai RGB565 untuk citra RGB565.thicknessmengontrol ketebalan garis dalam piksel.Mengembalikan objek citra sehingga Anda dapat memanggil metode lain menggunakan notasi
..Tidak didukung pada citra terkompresi atau citra bayer.
- draw_rectangle(x: int, y: int, w: int, h: int, color: int | Tuple[int, int, int] | None = None, thickness: int = 1, fill: bool = False) Image¶
Menggambar persegi panjang pada citra. Anda dapat meneruskan x, y, w, h secara terpisah atau sebagai tupel (x, y, w, h).
coloradalah tupel RGB888 untuk citra Grayscale atau RGB565. Defaultnya putih. Namun, Anda juga dapat meneruskan nilai piksel yang mendasarinya (0-255) untuk citra grayscale atau nilai RGB565 untuk citra RGB565.thicknessmengontrol ketebalan garis dalam piksel.Teruskan
filldiatur ke True untuk mengisi persegi panjang.Mengembalikan objek citra sehingga Anda dapat memanggil metode lain menggunakan notasi
..Tidak didukung pada citra terkompresi atau citra bayer.
- draw_circle(x: int, y: int, radius: int, color: int | Tuple[int, int, int] | None = None, thickness: int = 1, fill: bool = False) Image¶
Menggambar lingkaran pada citra. Anda dapat meneruskan x, y, radius secara terpisah atau sebagai tupel (x, y, radius).
coloradalah tupel RGB888 untuk citra Grayscale atau RGB565. Defaultnya putih. Namun, Anda juga dapat meneruskan nilai piksel yang mendasarinya (0-255) untuk citra grayscale atau nilai RGB565 untuk citra RGB565.thicknessmengontrol ketebalan tepi dalam piksel.Teruskan
filldiatur ke True untuk mengisi lingkaran.Mengembalikan objek citra sehingga Anda dapat memanggil metode lain menggunakan notasi
..Tidak didukung pada citra terkompresi atau citra bayer.
- draw_ellipse(cx: int, cy: int, rx: int, ry: int, rotation: int, color: int | Tuple[int, int, int] | None = None, thickness: int = 1, fill: bool = False) Image¶
Menggambar elips pada citra. Anda dapat meneruskan cx, cy, rx, ry, dan rotasi (dalam derajat) secara terpisah atau sebagai tupel (cx, yc, rx, ry, rotation).
coloradalah tupel RGB888 untuk citra Grayscale atau RGB565. Defaultnya putih. Namun, Anda juga dapat meneruskan nilai piksel yang mendasarinya (0-255) untuk citra grayscale atau nilai RGB565 untuk citra RGB565.thicknessmengontrol ketebalan tepi dalam piksel.Teruskan
filldiatur ke True untuk mengisi elips.Mengembalikan objek citra sehingga Anda dapat memanggil metode lain menggunakan notasi
..Tidak didukung pada citra terkompresi atau citra bayer.
- draw_string(x: int, y: int, text: str, color: int | Tuple[int, int, int] | None = None, scale: float = 1, x_spacing: int = 0, y_spacing: int = 0, mono_space: bool = True, char_rotation: int = 0, char_hmirror: bool = False, char_vflip: bool = False, string_rotation: int = 0, string_hmirror: bool = False, string_vflip: bool = False) Image¶
Menggambar teks 8x10 mulai dari lokasi (x, y) dalam citra. Anda dapat meneruskan x, y secara terpisah atau sebagai tupel (x, y).
textadalah string yang akan ditulis ke citra. Akhiran baris\n,\r, dan\r\nmemindahkan kursor ke baris berikutnya.coloradalah tupel RGB888 untuk citra Grayscale atau RGB565. Defaultnya putih. Namun, Anda juga dapat meneruskan nilai piksel yang mendasarinya (0-255) untuk citra grayscale atau nilai RGB565 untuk citra RGB565.scaledapat ditingkatkan untuk menaikkan/menurunkan ukuran teks pada citra. Anda dapat meneruskan nilai integer atau titik mengambang yang lebih besar dari 0.x_spacingmemungkinkan Anda menambah (jika positif) atau mengurangi (jika negatif) piksel x antara karakter.y_spacingmemungkinkan Anda menambah (jika positif) atau mengurangi (jika negatif) piksel y antara karakter (untuk teks multi-baris).mono_spacedefaultnya True yang memaksa teks memiliki spasi tetap. Untuk skala teks yang besar ini terlihat buruk. Atur ke False untuk mendapatkan spasi karakter lebar non-tetap yang terlihat JAUH lebih baik.char_rotationdapat berupa 0, 90, 180, 270 untuk memutar setiap karakter dalam string sebesar jumlah ini.char_hmirrorjika True membalikkan semua karakter dalam string secara horizontal.char_vflipjika True membalikkan semua karakter dalam string secara vertikal.string_rotationdapat berupa 0, 90, 180, 270 untuk memutar string sebesar jumlah ini.string_hmirrorjika True membalikkan string secara horizontal.string_vflipjika True membalikkan string secara vertikal.Mengembalikan objek citra sehingga Anda dapat memanggil metode lain menggunakan notasi
..Tidak didukung pada citra terkompresi atau citra bayer.
- draw_cross(x: int, y: int, color: int | Tuple[int, int, int] | None = None, size: int = 5, thickness: int = 1) Image¶
Menggambar tanda silang di lokasi x, y. Anda dapat meneruskan x, y secara terpisah atau sebagai tupel (x, y).
coloradalah tupel RGB888 untuk citra Grayscale atau RGB565. Defaultnya putih. Namun, Anda juga dapat meneruskan nilai piksel yang mendasarinya (0-255) untuk citra grayscale atau nilai RGB565 untuk citra RGB565.sizemengontrol seberapa panjang garis-garis silang memanjang.thicknessmengontrol ketebalan tepi dalam piksel.Mengembalikan objek citra sehingga Anda dapat memanggil metode lain menggunakan notasi
..Tidak didukung pada citra terkompresi atau citra bayer.
- draw_arrow(x0: int, y0: int, x1: int, y1: int, color: int | Tuple[int, int, int] | None = None, thickness: int = 1) Image¶
Menggambar panah dari (x0, y0) ke (x1, y1) pada citra. Anda dapat meneruskan x0, y0, x1, y1 secara terpisah atau sebagai tupel (x0, y0, x1, y1).
coloradalah tupel RGB888 untuk citra Grayscale atau RGB565. Defaultnya putih. Namun, Anda juga dapat meneruskan nilai piksel yang mendasarinya (0-255) untuk citra grayscale atau nilai RGB565 untuk citra RGB565.thicknessmengontrol ketebalan garis dalam piksel.Mengembalikan objek citra sehingga Anda dapat memanggil metode lain menggunakan notasi
..Tidak didukung pada citra terkompresi atau citra bayer.
- draw_detection(detection: Tuple[int, int, int, int, int, int], color1: int | Tuple[int, int, int] | None = None, color2: int | Tuple[int, int, int] | None = None, size: int = 5, thickness: int = 1, fill: bool = False, label: str | None = None, label_offset: Tuple[int, int] | None = None) Image¶
Menggambar hasil deteksi pada citra.
detectionadalah tupel 6 nilai(rx, ry, rw, rh, cx, cy)yang menggambarkan persegi panjang pembatas dan centroid (biasanya dikembalikan oleh kode NN atau pelacakan warna).color1adalah warna persegi panjang dancolor2adalah warna silang centroid.sizeadalah ukuran silang centroid,thicknessmengontrol lebar garis luar, danfillmengisi persegi panjang.labeljika disediakan digambar di dekat persegi panjang, diimbangi olehlabel_offset(x, y).Mengembalikan objek citra sehingga Anda dapat memanggil metode lain menggunakan notasi
..Tidak didukung pada citra terkompresi atau citra bayer.
- draw_edges(corners: List[Tuple[int, int]], color: int | Tuple[int, int, int] | None = None, size: int = 0, thickness: int = 1, fill: bool = False) Image¶
Menggambar tepi garis antara daftar sudut yang dikembalikan oleh metode seperti
blob.corners. Corners adalah tupel empat nilai berisi tupel dua nilai x/y. Misalnya [(x1,y1),(x2,y2),(x3,y3),(x4,y4)].coloradalah tupel RGB888 untuk citra Grayscale atau RGB565. Defaultnya putih. Namun, Anda juga dapat meneruskan nilai piksel yang mendasarinya (0-255) untuk citra grayscale atau nilai RGB565 untuk citra RGB565.sizejika lebih besar dari 0 menyebabkan sudut digambar sebagai lingkaran dengan radiussize.thicknessmengontrol ketebalan garis dalam piksel.Teruskan
filldiatur ke True untuk mengisi lingkaran sudut jika digambar.Mengembalikan objek citra sehingga Anda dapat memanggil metode lain menggunakan notasi
..Tidak didukung pada citra terkompresi atau citra bayer.
- draw_image(image: Image, x: int = 0, y: int = 0, x_scale: float = 1.0, y_scale: float = 1.0, roi: Tuple[int, int, int, int] | None = None, rgb_channel: int = -1, alpha: int = 255, color_palette: int | Image | None = None, alpha_palette: Image | None = None, hint: int = 0, transform: ndarray | None = None, mask: Image | None = None) Image¶
Menggambar sebuah
imageyang sudut kiri atasnya dimulai dari lokasi x, y. Anda dapat meneruskan x, y secara terpisah atau sebagai tupel (x, y). Metode ini secara otomatis menangani rendering citra yang diteruskan ke format piksel yang benar untuk citra tujuan sambil juga menangani pemotongan secara mulus.Anda juga dapat meneruskan path sebagai pengganti objek citra untuk metode ini agar secara otomatis memuat citra dari disk dan menggunakannya dalam satu langkah. Misalnya
draw_image("test.jpg").x_scalemengontrol seberapa besar citra yang ditampilkan diskalakan dalam arah x (float). Jika nilai ini negatif, citra akan dibalik secara horizontal. Perhatikan bahwa jikay_scaletidak ditentukan maka akan mengikutix_scaleuntuk mempertahankan rasio aspek.y_scalemengontrol seberapa besar citra yang ditampilkan diskalakan dalam arah y (float). Jika nilai ini negatif, citra akan dibalik secara vertikal. Perhatikan bahwa jikax_scaletidak ditentukan maka akan mengikutix_scaleuntuk mempertahankan rasio aspek.roiadalah tupel persegi panjang wilayah-yang-diminati (x, y, w, h) dari citra sumber yang akan digambar. Ini memungkinkan Anda mengekstrak hanya piksel di ROI untuk diskalakan dan digambar pada citra tujuan.rgb_channeladalah channel RGB (0=R, G=1, B=2) yang akan diekstrak dari citra RGB565 (jika diteruskan) dan ditampilkan pada citra tujuan. Misalnya, jika Anda meneruskanrgb_channel=1ini akan mengekstrak channel hijau dari citra RGB565 sumber dan menggambarnya dalam skala abu-abu pada citra tujuan.alphamengontrol seberapa banyak citra sumber yang dicampurkan ke citra tujuan. Nilai 255 menggambar citra sumber yang buram sementara nilai di bawah 255 menghasilkan pencampuran antara citra sumber dan tujuan. 0 menghasilkan tidak ada modifikasi pada citra tujuan.color_palettejika tidakNonedapat berupa enum palet warna atau citra RGB565 total 256 piksel yang digunakan sebagai tabel pencarian warna pada nilai grayscale dari citra sumber apa pun. Ini diterapkan setelah ekstraksirgb_channeljika digunakan.alpha_palettejika tidakNonedapat berupa citra GRAYSCALE total 256 piksel yang digunakan sebagai palet alpha yang memodulasi nilaialphadari citra sumber yang digambar pada tingkat piksel, memungkinkan Anda mengontrol nilai alpha piksel secara tepat berdasarkan nilai grayscale mereka. Nilai piksel 255 dalam tabel pencarian alpha bersifat buram sedangkan yang kurang dari 255 menjadi lebih transparan hingga 0. Ini diterapkan setelah ekstraksirgb_channeljika digunakan.hintadalah OR logis dari flag yang tercantum di Flag Hint (termasukimage.BLACK_BACKGROUNDyang didukung di sini).transformadalahndarray3x3 yang digunakan untuk melakukan transformasi perspektif pada citra. Saat ini hanya didukung pada OpenMV Cam N6 karena memiliki GPU yang dapat melakukan ini secara hardware.Mengembalikan objek citra sehingga Anda dapat memanggil metode lain menggunakan notasi
..
- draw_keypoints(keypoints: kp_desc | List[Tuple[int, int, int]], color: int | Tuple[int, int, int] | None = None, size: int = 10, thickness: int = 1, fill: bool = False) Image¶
Menggambar titik kunci dari objek keypoints pada citra. Anda juga dapat meneruskan daftar tupel tiga nilai yang berisi (x, y, rotation_angle_in_degrees) untuk menggunakan kembali metode ini dalam menggambar gliph keypoint yang merupakan lingkaran dengan garis yang menunjuk ke arah tertentu.
coloradalah tupel RGB888 untuk citra Grayscale atau RGB565. Defaultnya putih. Namun, Anda juga dapat meneruskan nilai piksel yang mendasarinya (0-255) untuk citra grayscale atau nilai RGB565 untuk citra RGB565.sizemengontrol seberapa besar titik kunci.thicknessmengontrol ketebalan garis dalam piksel.Teruskan
filldiatur ke True untuk mengisi titik kunci.Mengembalikan objek citra sehingga Anda dapat memanggil metode lain menggunakan notasi
..Tidak didukung pada citra terkompresi atau citra bayer.
- flood_fill(x: int, y: int, seed_threshold: float = 0.05, floating_threshold: float = 0.05, color: int | Tuple[int, int, int] | None = None, invert: bool = False, clear_background: bool = False, mask: Image | None = None) Image¶
Mengisi banjir suatu wilayah pada citra mulai dari lokasi x, y. Anda dapat meneruskan x, y secara terpisah atau sebagai tupel (x, y).
seed_thresholdmengontrol seberapa besar perbedaan piksel mana pun di area isian dari piksel awal asli.floating_thresholdmengontrol seberapa besar perbedaan piksel mana pun di area isian dari piksel tetangganya.coloradalah tupel RGB888 untuk citra Grayscale atau RGB565. Defaultnya putih. Namun, Anda juga dapat meneruskan nilai piksel yang mendasarinya (0-255) untuk citra grayscale atau nilai RGB565 untuk citra RGB565.Teruskan
invertsebagai True untuk mewarnai ulang semua yang ada di luar area yang terhubung oleh flood-fill.Teruskan
clear_backgroundsebagai True untuk mengolkan sisa piksel yang tidak diwarnai ulang oleh flood-fill.maskadalah citra lain yang digunakan sebagai mask tingkat piksel untuk operasi. Mask harus berupa citra dengan hanya piksel hitam atau putih dan harus berukuran sama dengan citra yang dioperasikan. Hanya piksel yang diatur dalam mask yang dievaluasi saat mengisi banjir.Mengembalikan objek citra sehingga Anda dapat memanggil metode lain menggunakan notasi
..Tidak didukung pada citra terkompresi atau citra bayer.
Metode ini tidak tersedia di OpenMV Cam M4.
- draw_event_histogram(array: ndarray, clear: bool = True, brightness: int = 128, contrast: int = 16) Image¶
Merasterisasi ndarray peristiwa (seperti yang diisi oleh
csi.IOCTL_GENX320_READ_EVENTS) ke sebuahImageuntuk visualisasi. Buffer citra harus berupa citra GRAYSCALE 320x320.Untuk setiap baris
csi.PIX_ON_EVENT, piksel peristiwa mendapatkan tambahan+contrast; untuk setiap bariscsi.PIX_OFF_EVENT, piksel mendapatkan-contrast. Peristiwa pemicu diabaikan. Nilai piksel dibatasi pada rentang 0-255.clearjika True mengatur ulang buffer citra kebrightnesssebelum menggambar --- setiap bingkai menjadi render hanya-peristiwa yang baru. Atur ke False untuk mengakumulasi peristiwa di beberapa panggilan (berguna untuk jejak gerak eksposur panjang).brightnessmengontrol baseline abu-abu tengah tempat buffer direset ketikaclearadalah True. Nilai default 128 menempatkan peristiwa ON di ujung terang dan peristiwa OFF di ujung gelap dengan ruang yang sama.contrastmengontrol seberapa banyak setiap peristiwa menggeser pikselnya --- nilai yang lebih tinggi membuat peristiwa lebih menonjol, dengan biaya saturasi yang cepat ketika banyak peristiwa jatuh pada piksel yang sama.
Metode Masking¶
- mask_rectangle(x: int, y: int, w: int, h: int) Image¶
Mengolkan bagian persegi panjang dari citra. Jika tidak ada argumen yang diberikan, metode ini mengolkan bagian tengah citra.
Mengembalikan objek citra sehingga Anda dapat memanggil metode lain menggunakan notasi
..Tidak didukung pada citra terkompresi atau citra bayer.
- mask_circle(x: int, y: int, radius: int) Image¶
Mengolkan bagian lingkaran dari citra. Jika tidak ada argumen yang diberikan, metode ini mengolkan bagian tengah citra.
Mengembalikan objek citra sehingga Anda dapat memanggil metode lain menggunakan notasi
..Tidak didukung pada citra terkompresi atau citra bayer.
- mask_ellipse(x: int, y: int, radius_x: int, radius_y: int, rotation_angle_in_degrees: int) Image¶
Mengolkan bagian berbentuk elips dari citra. Jika tidak ada argumen yang diberikan, metode ini mengolkan bagian tengah citra.
Mengembalikan objek citra sehingga Anda dapat memanggil metode lain menggunakan notasi
..Tidak didukung pada citra terkompresi atau citra bayer.
Metode Biner¶
- binary(thresholds: List[Tuple[int, int]], invert: bool = False, zero: bool = False, mask: Image | None = None, to_bitmap: bool = False, copy: bool = False) Image¶
Mengatur semua piksel dalam citra menjadi hitam atau putih tergantung pada apakah setiap piksel berada di dalam salah satu tupel ambang batas dalam
thresholds.thresholdsadalah daftar tupel(lo, hi)untuk citra grayscale, atau tupel(l_lo, l_hi, a_lo, a_hi, b_lo, b_hi)untuk citra RGB565. Nilai min/max yang tertukar diperbaiki secara otomatis; komponen yang hilang default ke rentang maksimum.invertmembalikkan pencocokan ambang batas.zerojika True, mengolkan piksel yang diambang dan membiarkan yang lain tidak diubah.maskadalah citra biner yang digunakan sebagai mask tingkat piksel; hanya piksel yang diatur dalam mask yang dimodifikasi.to_bitmapjika True, mengonversi data citra ke bitmap 1-bit-per-piksel. Untuk citra yang sangat kecil ini mungkin memerlukancopy=True.copyjika True, mengembalikan citra baru di heap alih-alih memodifikasi citra sumber.Mengembalikan objek citra sehingga Anda dapat memanggil metode lain menggunakan notasi
..Tidak didukung pada citra terkompresi atau citra bayer.
- invert() Image¶
Membalikkan semua nilai piksel dalam citra (setiap piksel menjadi
255 - pixeluntuk channel 8-bit).Mengembalikan objek citra sehingga Anda dapat memanggil metode lain menggunakan notasi
..Tidak didukung pada citra terkompresi atau citra bayer/yuv.
- b_and(image: Image, mask: Image | None = None) Image¶
Melakukan AND logis pada citra ini dengan citra lain.
imagedapat berupa objek citra, path ke file citra yang tidak terkompresi (bmp/pgm/ppm), atau nilai skalar (tupel RGB888 atau nilai piksel yang mendasarinya).maskadalah citra biner yang digunakan sebagai mask tingkat piksel; hanya piksel yang diatur dalam mask yang dimodifikasi.Mengembalikan objek citra sehingga Anda dapat memanggil metode lain menggunakan notasi
..Tidak didukung pada citra terkompresi atau citra bayer.
- b_nand(image: Image, mask: Image | None = None) Image¶
Melakukan NAND logis pada citra ini dengan citra lain.
imagedapat berupa objek citra, path ke file citra yang tidak terkompresi (bmp/pgm/ppm), atau nilai skalar (tupel RGB888 atau nilai piksel yang mendasarinya).maskadalah citra biner yang digunakan sebagai mask tingkat piksel; hanya piksel yang diatur dalam mask yang dimodifikasi.Mengembalikan objek citra sehingga Anda dapat memanggil metode lain menggunakan notasi
..Tidak didukung pada citra terkompresi atau citra bayer.
- b_or(image: Image, mask: Image | None = None) Image¶
Melakukan OR logis pada citra ini dengan citra lain.
imagedapat berupa objek citra, path ke file citra yang tidak terkompresi (bmp/pgm/ppm), atau nilai skalar (tupel RGB888 atau nilai piksel yang mendasarinya).maskadalah citra biner yang digunakan sebagai mask tingkat piksel; hanya piksel yang diatur dalam mask yang dimodifikasi.Mengembalikan objek citra sehingga Anda dapat memanggil metode lain menggunakan notasi
..Tidak didukung pada citra terkompresi atau citra bayer.
- b_nor(image: Image, mask: Image | None = None) Image¶
Melakukan NOR logis pada citra ini dengan citra lain.
imagedapat berupa objek citra, path ke file citra yang tidak terkompresi (bmp/pgm/ppm), atau nilai skalar (tupel RGB888 atau nilai piksel yang mendasarinya).maskadalah citra biner yang digunakan sebagai mask tingkat piksel; hanya piksel yang diatur dalam mask yang dimodifikasi.Mengembalikan objek citra sehingga Anda dapat memanggil metode lain menggunakan notasi
..Tidak didukung pada citra terkompresi atau citra bayer.
- b_xor(image: Image, mask: Image | None = None) Image¶
Melakukan XOR logis pada citra ini dengan citra lain.
imagedapat berupa objek citra, path ke file citra yang tidak terkompresi (bmp/pgm/ppm), atau nilai skalar (tupel RGB888 atau nilai piksel yang mendasarinya).maskadalah citra biner yang digunakan sebagai mask tingkat piksel; hanya piksel yang diatur dalam mask yang dimodifikasi.Mengembalikan objek citra sehingga Anda dapat memanggil metode lain menggunakan notasi
..Tidak didukung pada citra terkompresi atau citra bayer.
- b_xnor(image: Image, mask: Image | None = None) Image¶
Melakukan XNOR logis pada citra ini dengan citra lain.
imagedapat berupa objek citra, path ke file citra yang tidak terkompresi (bmp/pgm/ppm), atau nilai skalar (tupel RGB888 atau nilai piksel yang mendasarinya).maskadalah citra biner yang digunakan sebagai mask tingkat piksel; hanya piksel yang diatur dalam mask yang dimodifikasi.Mengembalikan objek citra sehingga Anda dapat memanggil metode lain menggunakan notasi
..Tidak didukung pada citra terkompresi atau citra bayer.
Metode ISP¶
- awb(max: bool = False) Image¶
Melakukan keseimbangan putih otomatis pada citra menggunakan algoritma gray-world. Beroperasi pada citra RAW Bayer atau RGB565. Tidak berpengaruh pada citra biner/grayscale.
maxjika True, menggunakan algoritma white-patch sebagai gantinya.Mengembalikan objek citra sehingga Anda dapat memanggil metode lain menggunakan notasi
..Tidak didukung pada citra terkompresi atau yuv.
- ccm(matrix: List[List[float]]) Image¶
Mengalikan matriks koreksi warna titik mengambang yang diteruskan dengan citra. Matriks dapat berupa 3x3 atau 3x4 (dengan kolom offset), dalam bentuk daftar bersarang atau daftar datar:
[[rr, rg, rb], [gr, gg, gb], [br, bg, bb]] [[rr, rg, rb, ro], [gr, gg, gb, go], [br, bg, bb, bo]] [rr, rg, rb, ro, gr, gg, gb, go, br, bg, bb, bo]
Mengembalikan objek citra sehingga Anda dapat memanggil metode lain menggunakan notasi
..Tidak didukung pada citra terkompresi atau citra bayer/yuv.
- gamma(gamma: float = 1.0, contrast: float = 1.0, brightness: float = 0.0) Image¶
Menyesuaikan gamma, kontras, dan kecerahan citra.
gammamenerapkanpow(pixel, 1/gamma)setelah normalisasi. Nilai lebih besar dari 1,0 mencerahkan; kurang dari 1,0 menggelapkan.contrastmenerapkanpixel * contrastsetelah normalisasi.brightnessmenerapkanpixel + brightnesssetelah normalisasi.Mengembalikan objek citra sehingga Anda dapat memanggil metode lain menggunakan notasi
..Tidak didukung pada citra terkompresi atau bayer/yuv.
Metode Matematika¶
- negate() Image¶
Alias untuk
Image.invert.
- replace(image: Image | None = None, **kwargs) Image¶
Alias untuk
Image.draw_image(). Mengganti citra ini denganimage(atau mentransformasi citra ini di tempat jikaimagedihilangkan) menggunakan argumen kata kuncidraw_imagestandar. Argumentransformadalahndarray3x3 yang menggambarkan transformasi perspektif (hanya didukung pada kamera OpenMV dengan ULAB diaktifkan).
- assign(image: Image | None = None, **kwargs) Image¶
Alias untuk
Image.replace().
- set(image: Image | None = None, **kwargs) Image¶
Alias untuk
Image.replace().
- add(image: Image, mask: Image | None = None) Image¶
Menambahkan citra secara per-piksel ke citra ini.
imagedapat berupa objek citra, path ke file citra yang tidak terkompresi (bmp/pgm/ppm), atau nilai skalar (tupel RGB888 atau nilai piksel yang mendasarinya).maskadalah citra biner yang digunakan sebagai mask tingkat piksel; hanya piksel yang diatur dalam mask yang dimodifikasi.Mengembalikan objek citra sehingga Anda dapat memanggil metode lain menggunakan notasi
..Tidak didukung pada citra terkompresi atau citra bayer.
- sub(image: Image, mask: Image | None = None) Image¶
Mengurangi
imagesecara per-piksel dari citra ini (self - image).imagedapat berupa objek citra, path ke file citra yang tidak terkompresi (bmp/pgm/ppm), atau nilai skalar (tupel RGB888 atau nilai piksel yang mendasarinya).maskadalah citra biner yang digunakan sebagai mask tingkat piksel; hanya piksel yang diatur dalam mask yang dimodifikasi.Metode ini juga menerima set lengkap argumen kata kunci
Image.draw_image()(x,y,x_scale,y_scale,roi,rgb_channel,alpha,color_palette,alpha_palette,hint,transform).Tidak didukung pada citra terkompresi atau citra bayer.
- rsub(image: Image, mask: Image | None = None) Image¶
Pengurangan terbalik: mengganti citra ini dengan
image - selfsecara per-piksel. Selainnya identik denganImage.sub().
- min(image: Image, mask: Image | None = None) Image¶
Mengembalikan citra minimum dari dua citra secara per-piksel.
imagedapat berupa objek citra, path ke file citra yang tidak terkompresi (bmp/pgm/ppm), atau nilai skalar (tupel RGB888 atau nilai piksel yang mendasarinya).maskadalah citra biner yang digunakan sebagai mask tingkat piksel; hanya piksel yang diatur dalam mask yang dimodifikasi.Mengembalikan objek citra sehingga Anda dapat memanggil metode lain menggunakan notasi
..Tidak didukung pada citra terkompresi atau citra bayer.
- max(image: Image, mask: Image | None = None) Image¶
Mengembalikan citra maksimum dari dua citra secara per-piksel.
imagedapat berupa objek citra, path ke file citra yang tidak terkompresi (bmp/pgm/ppm), atau nilai skalar (tupel RGB888 atau nilai piksel yang mendasarinya).maskadalah citra biner yang digunakan sebagai mask tingkat piksel; hanya piksel yang diatur dalam mask yang dimodifikasi.Mengembalikan objek citra sehingga Anda dapat memanggil metode lain menggunakan notasi
..Tidak didukung pada citra terkompresi atau citra bayer.
- difference(image: Image, mask: Image | None = None) Image¶
Mengembalikan citra selisih absolut antara dua citra (misalnya ||a-b||).
imagedapat berupa objek citra, path ke file citra yang tidak terkompresi (bmp/pgm/ppm), atau nilai skalar (tupel RGB888 atau nilai piksel yang mendasarinya).maskadalah citra biner yang digunakan sebagai mask tingkat piksel; hanya piksel yang diatur dalam mask yang dimodifikasi.Mengembalikan objek citra sehingga Anda dapat memanggil metode lain menggunakan notasi
..Tidak didukung pada citra terkompresi atau citra bayer.
- blend(image: Image, x: int = 0, y: int = 0, alpha: int = 128, mask: Image | None = None, **kwargs) Image¶
Alias untuk
Image.draw_image(). Mencampurimageke citra ini secara alpha.alphaadalah bilangan bulat 0-256; nilai yang lebih dekat ke 256 mengutamakan citra sumber. Menerima semua argumen kata kunciImage.draw_image().
- histeq(adaptive: bool = False, clip_limit: float = -1, mask: Image | None = None) Image¶
Menjalankan ekualisasi histogram pada citra untuk menormalkan kontras dan kecerahan.
adaptivejika True, menjalankan ekualisasi histogram adaptif (lebih lambat namun umumnya lebih baik).clip_limitmembatasi kontras dalam varian adaptif (nilai kecil seperti 10 menghasilkan hasil CLAHE yang baik).maskadalah citra biner yang digunakan sebagai mask tingkat piksel; hanya piksel yang diatur dalam mask yang dimodifikasi.Mengembalikan objek citra sehingga Anda dapat memanggil metode lain menggunakan notasi
..Tidak didukung pada citra terkompresi atau citra bayer.
Metode Pemfilteran¶
- erode(size: int, threshold: int | None = None, mask: Image | None = None) Image¶
Menghapus piksel dari tepi area yang tersegmentasi. Melakukan konvolusi kernel
((size*2)+1)x((size*2)+1)melintasi citra, mengosongkan piksel tengah jika lebih darithresholdtetangga kosong (bertindak sebagai erosi standar jikathresholdadalah None).maskadalah citra biner yang digunakan sebagai mask tingkat piksel; hanya piksel yang diatur dalam mask yang dimodifikasi.Mengembalikan objek citra sehingga Anda dapat memanggil metode lain menggunakan notasi
..Tidak didukung pada citra terkompresi atau citra bayer/yuv.
- dilate(size: int, threshold: int | None = None, mask: Image | None = None) Image¶
Menambahkan piksel ke tepi area yang tersegmentasi. Melakukan konvolusi kernel
((size*2)+1)x((size*2)+1)melintasi citra, mengatur piksel tengah jika lebih darithresholdtetangga diatur (bertindak sebagai dilatasi standar jikathresholdadalah None).maskadalah citra biner yang digunakan sebagai mask tingkat piksel; hanya piksel yang diatur dalam mask yang dimodifikasi.Mengembalikan objek citra sehingga Anda dapat memanggil metode lain menggunakan notasi
..Tidak didukung pada citra terkompresi atau citra bayer/yuv.
- open(size: int, threshold: int | None = None, mask: Image | None = None) Image¶
Melakukan erosi kemudian dilatasi. Lihat
Image.erode()danImage.dilate().maskadalah citra biner yang digunakan sebagai mask tingkat piksel; hanya piksel yang diatur dalam mask yang dimodifikasi.Tidak didukung pada citra terkompresi atau citra bayer/yuv.
- close(size: int, threshold: int | None = None, mask: Image | None = None) Image¶
Melakukan dilatasi kemudian erosi. Lihat
Image.dilate()danImage.erode().maskadalah citra biner yang digunakan sebagai mask tingkat piksel; hanya piksel yang diatur dalam mask yang dimodifikasi.Tidak didukung pada citra terkompresi atau citra bayer/yuv.
- top_hat(size: int, threshold: int | None = None, mask: Image | None = None) Image¶
Mengembalikan selisih citra antara citra dan citra yang di-
Image.open()-kan.maskadalah citra biner yang digunakan sebagai mask tingkat piksel; hanya piksel yang diatur dalam mask yang dimodifikasi.Tidak didukung pada citra terkompresi atau citra bayer/yuv.
- black_hat(size: int, threshold: int | None = None, mask: Image | None = None) Image¶
Mengembalikan selisih citra antara citra dan citra yang di-
Image.close()-kan.maskadalah citra biner yang digunakan sebagai mask tingkat piksel; hanya piksel yang diatur dalam mask yang dimodifikasi.Tidak didukung pada citra terkompresi atau citra bayer/yuv.
- mean(size: int, threshold: bool | None = False, offset: int | None = 0, invert: bool | None = False, mask: Image | None = None) Image¶
Filter blur rata-rata standar menggunakan filter kotak.
sizeadalah ukuran kernel. Gunakan 1 (kernel 3x3), 2 (kernel 5x5), dll.thresholdjika True, mengambang secara adaptif output filter ke citra biner.offsetmenggeser binerisasi (negatif membuat lebih banyak piksel putih, positif membuat lebih sedikit).invertmembalikkan output biner.maskadalah citra biner yang digunakan sebagai mask tingkat piksel; hanya piksel yang diatur dalam mask yang dimodifikasi.Mengembalikan objek citra sehingga Anda dapat memanggil metode lain menggunakan notasi
..Tidak didukung pada citra terkompresi atau citra bayer/yuv.
- median(size: int, percentile: float | None = 0.5, threshold: bool | None = False, offset: int | None = 0, invert: bool | None = False, mask: Image | None = None) Image¶
Menjalankan filter persentil pada citra (median secara default).
sizeadalah ukuran kernel. Gunakan 1 (kernel 3x3), 2 (kernel 5x5), dll.percentileadalah persentil yang dipilih dari setiap kernel (0 = min, 0.5 = median, 1.0 = max). Default ke 0,5.thresholdjika True, mengambang secara adaptif output filter ke citra biner.offsetmenggeser binerisasi (negatif membuat lebih banyak piksel putih, positif membuat lebih sedikit).invertmembalikkan output biner.maskadalah citra biner yang digunakan sebagai mask tingkat piksel; hanya piksel yang diatur dalam mask yang dimodifikasi.Mengembalikan objek citra sehingga Anda dapat memanggil metode lain menggunakan notasi
..Tidak didukung pada citra terkompresi atau citra bayer/yuv.
- mode(size: int, threshold: bool | None = False, offset: int | None = 0, invert: bool | None = False, mask: Image | None = None) Image¶
Mengganti setiap piksel dengan modus tetangganya. Dapat menghasilkan artefak pada tepi citra RGB karena operasi non-linear.
sizeadalah ukuran kernel. Gunakan 1 (kernel 3x3), 2 (kernel 5x5), dll.thresholdjika True, mengambang secara adaptif output filter ke citra biner.offsetmenggeser binerisasi (negatif membuat lebih banyak piksel putih, positif membuat lebih sedikit).invertmembalikkan output biner.maskadalah citra biner yang digunakan sebagai mask tingkat piksel; hanya piksel yang diatur dalam mask yang dimodifikasi.Mengembalikan objek citra sehingga Anda dapat memanggil metode lain menggunakan notasi
..Tidak didukung pada citra terkompresi atau citra bayer/yuv.
- midpoint(size: int, bias: float | None = 0.5, threshold: bool | None = False, offset: int | None = 0, invert: bool | None = False, mask: Image | None = None) Image¶
Menjalankan filter midpoint pada citra. Filter ini menemukan midpoint ((max-min)/2) dari setiap lingkungan piksel dalam citra.
sizeadalah ukuran kernel. Gunakan 1 (kernel 3x3), 2 (kernel 5x5), dll.biasmengontrol pencampuran min/max. 0 hanya untuk filter min, 1,0 hanya untuk filter max. Dengan menggunakanbiasAnda dapat memfilter citra dengan min/max.thresholdjika True, mengambang secara adaptif output filter ke citra biner.offsetmenggeser binerisasi (negatif membuat lebih banyak piksel putih, positif membuat lebih sedikit).invertmembalikkan output biner.maskadalah citra biner yang digunakan sebagai mask tingkat piksel; hanya piksel yang diatur dalam mask yang dimodifikasi.Mengembalikan objek citra sehingga Anda dapat memanggil metode lain menggunakan notasi
..Tidak didukung pada citra terkompresi atau citra bayer/yuv.
- morph(size: int, kernel: list, mul: float | None = 1.0, add: float | None = 0.0, threshold: bool | None = False, offset: int | None = 0, invert: bool | None = False, mask: Image | None = None) Image¶
Melakukan konvolusi citra dengan kernel filter sembarang.
sizemengontrol ukuran kernel, yang harus berupa elemen((size*2)+1)x((size*2)+1).kerneladalah kernel untuk dikonvolusikan, sebagai daftar/tupel 1D datar dari elemen((size*2)+1)*((size*2)+1), atau sebagai daftar/tupel 2D dengan baris((size*2)+1)dari elemen((size*2)+1).muladalah skala kontras multiplikatif (default 1.0).addadalah offset kecerahan aditif (default 0.0).thresholdjika True, mengambang secara adaptif output filter ke citra biner.offsetmenggeser binerisasi (negatif membuat lebih banyak piksel putih, positif membuat lebih sedikit).invertmembalikkan output biner.maskadalah citra biner yang digunakan sebagai mask tingkat piksel; hanya piksel yang diatur dalam mask yang dimodifikasi.Mengembalikan objek citra sehingga Anda dapat memanggil metode lain menggunakan notasi
..Tidak didukung pada citra terkompresi atau citra bayer/yuv.
- gaussian(size: int, unsharp: bool | None = False, mul: float | None = 1.0, add: float | None = 0.0, threshold: bool | None = False, offset: int | None = 0, invert: bool | None = False, mask: Image | None = None) Image¶
Melakukan konvolusi citra dengan kernel gaussian pemulusan.
sizeadalah ukuran kernel. Gunakan 1 (kernel 3x3), 2 (kernel 5x5), dll.unsharpjika True, melakukan operasi unsharp mask (mempertajam tepi) alih-alih gaussian biasa.muladalah skala kontras multiplikatif (default 1.0).addadalah offset kecerahan aditif (default 0.0).thresholdjika True, mengambang secara adaptif output filter ke citra biner.offsetmenggeser binerisasi (negatif membuat lebih banyak piksel putih, positif membuat lebih sedikit).invertmembalikkan output biner.maskadalah citra biner yang digunakan sebagai mask tingkat piksel; hanya piksel yang diatur dalam mask yang dimodifikasi.Mengembalikan objek citra sehingga Anda dapat memanggil metode lain menggunakan notasi
..Tidak didukung pada citra terkompresi atau citra bayer/yuv.
- laplacian(size: int, sharpen: bool | None = False, mul: float | None = 1.0, add: float | None = 0.0, threshold: bool | None = False, offset: int | None = 0, invert: bool | None = False, mask: Image | None = None) Image¶
Melakukan konvolusi citra dengan kernel laplacian pendeteksi tepi.
sizeadalah ukuran kernel. Gunakan 1 (kernel 3x3), 2 (kernel 5x5), dll.sharpenjika True, mempertajam citra alih-alih menghasilkan respons tepi mentah yang tidak diambang.muladalah skala kontras multiplikatif (default 1.0).addadalah offset kecerahan aditif (default 0.0).thresholdjika True, mengambang secara adaptif output filter ke citra biner.offsetmenggeser binerisasi (negatif membuat lebih banyak piksel putih, positif membuat lebih sedikit).invertmembalikkan output biner.maskadalah citra biner yang digunakan sebagai mask tingkat piksel; hanya piksel yang diatur dalam mask yang dimodifikasi.Mengembalikan objek citra sehingga Anda dapat memanggil metode lain menggunakan notasi
..Tidak didukung pada citra terkompresi atau citra bayer/yuv.
- bilateral(size: int, color_sigma: float | None = 0.1, space_sigma: float | None = 1.0, threshold: bool | None = False, offset: int | None = 0, invert: bool | None = False, mask: Image | None = None) Image¶
Melakukan konvolusi citra dengan filter bilateral (pemulusan yang mempertahankan tepi).
sizeadalah ukuran kernel. Gunakan 1 (kernel 3x3), 2 (kernel 5x5), dll.color_sigmamengontrol toleransi pencocokan warna; nilai yang lebih besar menghasilkan lebih banyak blur warna.space_sigmamengontrol blur spasial; nilai yang lebih besar menghasilkan lebih banyak blur piksel.thresholdjika True, mengambang secara adaptif output filter ke citra biner.offsetmenggeser binerisasi (negatif membuat lebih banyak piksel putih, positif membuat lebih sedikit).invertmembalikkan output biner.maskadalah citra biner yang digunakan sebagai mask tingkat piksel; hanya piksel yang diatur dalam mask yang dimodifikasi.Mengembalikan objek citra sehingga Anda dapat memanggil metode lain menggunakan notasi
..Tidak didukung pada citra terkompresi atau citra bayer/yuv.
Metode Geometris¶
- linpolar(reverse: bool = False, *, x: int | None = None, y: int | None = None) Image¶
Memproyeksikan ulang citra dari koordinat Kartesius ke koordinat polar linier.
Atur
reverse=Trueuntuk memproyeksikan ulang ke arah yang berlawanan.xdanymenentukan koordinat pusat transformasi dalam piksel citra. JikaxadalahNone(nilai default) maka diatur ke setengah lebar citra; demikian pulaydefault ke setengah tinggi citra.Proyeksi ulang polar linier mengubah rotasi citra menjadi translasi-x.
Tidak didukung pada citra terkompresi atau citra bayer.
Metode ini tidak tersedia di OpenMV Cam M4.
- logpolar(reverse: bool = False, *, x: int | None = None, y: int | None = None) Image¶
Memproyeksikan ulang citra dari koordinat Kartesius ke koordinat log polar.
Atur
reverse=Trueuntuk memproyeksikan ulang ke arah yang berlawanan.xdanymenentukan koordinat pusat transformasi dalam piksel citra. JikaxadalahNone(nilai default) maka diatur ke setengah lebar citra; demikian pulaydefault ke setengah tinggi citra.Proyeksi ulang log polar mengubah rotasi citra menjadi translasi-x dan penskalaan/pembesaran menjadi translasi-y.
Tidak didukung pada citra terkompresi atau citra bayer.
Metode ini tidak tersedia di OpenMV Cam M4.
- lens_corr(strength: float = 1.8, zoom: float = 1.0, x_corr: float = 0.0, y_corr: float = 0.0) Image¶
Melakukan koreksi lensa untuk menghilangkan efek fisheye pada citra akibat distorsi lensa.
strengthadalah float yang mendefinisikan seberapa banyak efek fisheye dihilangkan dari citra. Coba 1,8 secara default kemudian tingkatkan atau kurangi dari sana hingga citra terlihat bagus.zoomadalah jumlah pembesaran pada citra. Default 1,0.x_corradalah offset piksel titik mengambang dari tengah. Dapat negatif atau positif.y_corradalah offset piksel titik mengambang dari tengah. Dapat negatif atau positif.Mengembalikan objek citra sehingga Anda dapat memanggil metode lain menggunakan notasi
..Tidak didukung pada citra terkompresi atau citra bayer.
- rotation_corr(x_rotation: float = 0.0, y_rotation: float = 0.0, z_rotation: float = 0.0, x_translation: float = 0.0, y_translation: float = 0.0, zoom: float = 1.0, fov: float = 60.0, corners: List[Tuple[int, int]] | None = None) Image¶
Memperbaiki masalah perspektif dalam citra dengan melakukan rotasi 3D dari buffer bingkai.
x_rotationadalah jumlah derajat untuk memutar citra dalam buffer bingkai di sekitar sumbu x (yaitu ini memutar citra ke atas dan ke bawah).y_rotationadalah jumlah derajat untuk memutar citra dalam buffer bingkai di sekitar sumbu y (yaitu ini memutar citra ke kiri dan ke kanan).z_rotationadalah jumlah derajat untuk memutar citra dalam buffer bingkai di sekitar sumbu z (yaitu ini memutar citra di tempat).x_translationadalah jumlah unit untuk memindahkan citra ke kiri atau kanan setelah rotasi. Karena translasi ini diterapkan dalam ruang 3D, satuannya bukan piksel...y_translationadalah jumlah unit untuk memindahkan citra ke atas atau bawah setelah rotasi. Karena translasi ini diterapkan dalam ruang 3D, satuannya bukan piksel...zoomadalah jumlah pembesaran pada citra. Default 1,0.fovadalah sudut pandang yang digunakan untuk proyeksi 2D->3D internal. Saatfovmendekati 0, citra ditempatkan di tak terhingga; saat mendekati 180, citra ditempatkan di dalam viewport.cornersadalah daftar dari empat tupel (x, y) yang digunakan untuk membangun homografi 4-titik yang memetakan sudut ke (0, 0), (image_width-1, 0), (image_width-1, image_height-1), dan (0, image_height-1) sebelum menerapkan rotasi 3D. Berguna untuk transformasi tampilan mata burung.Mengembalikan objek citra sehingga Anda dapat memanggil metode lain menggunakan notasi
..Tidak didukung pada citra terkompresi atau citra bayer.
Metode ini tidak tersedia di OpenMV Cam M4.
Metode Get¶
- get_similarity(image: Image, x: int = 0, y: int = 0, x_scale: float = 1.0, y_scale: float = 1.0, roi: Tuple[int, int, int, int] | None = None, rgb_channel: int = -1, alpha: int = 255, color_palette: int | Image | None = None, alpha_palette: Image | None = None, hint: int = 0, transform: ndarray | None = None, dssim: bool = False) Similarity¶
Menghitung kesamaan antara dua citra menggunakan Indeks Kesamaan Struktural (SSIM). SSIM berkisar dari -1 (berlawanan) hingga 1 (identik). Mengembalikan objek
image.similarity.imageadalah citra untuk dibandingkan (objek citra atau string path, misalnya"test.jpg").x,y,x_scale,y_scale,roi,rgb_channel,alpha,color_palette,alpha_palette,hint, dantransformmenerima nilai yang sama denganImage.draw_image().dssimjika True, mengembalikan Indeks Ketidaksamaan Struktural (DSSIM) sebagai gantinya, di mana 0 berarti identik dan 1 berarti sepenuhnya berbeda.
- get_histogram(thresholds: List[Tuple[int, int]] | None = None, invert: bool = False, roi: Tuple[int, int, int, int] | None = None, bins: int = -1, l_bins: int = -1, a_bins: int = -1, b_bins: int = -1, difference: Image | None = None) histogram¶
Menghitung histogram yang dinormalisasi pada semua channel warna untuk sebuah
roidan mengembalikan objekimage.histogram. Juga tersedia sebagaiImage.get_hist()atauImage.histogram().thresholdsadalah daftar tupel(lo, hi)untuk citra grayscale, atau tupel(l_lo, l_hi, a_lo, a_hi, b_lo, b_hi)untuk citra RGB565. Jika diteruskan, histogram hanya dihitung untuk piksel dalam ambang batas.invertmembalikkan pencocokan ambang batas.roiadalah tupel persegi panjang wilayah-yang-diminati (x, y, w, h). Default ke persegi panjang citra.bins(grayscale) ataul_bins/a_bins/b_bins(RGB565) mengatur jumlah bin histogram per channel. Harus lebih besar dari 2. Default ke bin maksimum per channel.differencedapat diatur ke objek citra untuk beroperasi pada selisih antara citra saat ini dan citra tersebut tanpa buffer tambahan.Tidak didukung pada citra terkompresi atau citra bayer.
- get_statistics(thresholds: List[Tuple[int, int]] | None = None, invert: bool = False, roi: Tuple[int, int, int, int] | None = None, bins: int = -1, l_bins: int = -1, a_bins: int = -1, b_bins: int = -1, difference: Image | None = None) statistics¶
Menghitung rata-rata, median, modus, standar deviasi, min, maks, kuartil bawah, dan kuartil atas untuk semua channel warna untuk sebuah
roidan mengembalikan objekimage.statistics. Juga tersedia sebagaiImage.get_stats()atauImage.statistics().thresholdsadalah daftar tupel(lo, hi)untuk citra grayscale, atau tupel(l_lo, l_hi, a_lo, a_hi, b_lo, b_hi)untuk citra RGB565. Jika diteruskan, statistik hanya dihitung untuk piksel dalam ambang batas.invertmembalikkan pencocokan ambang batas.roiadalah tupel persegi panjang wilayah-yang-diminati (x, y, w, h). Default ke persegi panjang citra.bins(grayscale) ataul_bins/a_bins/b_bins(RGB565) mengatur jumlah bin histogram per channel. Harus lebih besar dari 2. Default ke bin maksimum per channel.differencedapat diatur ke objek citra untuk beroperasi pada selisih antara citra saat ini dan citra tersebut tanpa buffer tambahan.Tidak didukung pada citra terkompresi atau citra bayer.
- get_regression(thresholds: List[Tuple[int, int]], invert: bool = False, roi: Tuple[int, int, int, int] | None = None, x_stride: int = 2, y_stride: int = 1, area_threshold: int = 10, pixels_threshold: int = 10, target_size: Tuple[int, int] = (80, 60)) line¶
Menghitung regresi linier (Theil-Sen) pada semua piksel yang diambang dalam citra. Mengembalikan objek
image.line, atau None jika tidak ada garis yang ditemukan.thresholdsadalah daftar tupel(lo, hi)untuk citra grayscale, atau tupel(l_lo, l_hi, a_lo, a_hi, b_lo, b_hi)untuk citra RGB565.invertmembalikkan pencocokan ambang batas.roiadalah tupel persegi panjang wilayah-yang-diminati (x, y, w, h). Default ke persegi panjang citra.x_stridedany_stridemengontrol berapa banyak piksel yang dilewati saat mengevaluasi citra.area_thresholdarea kotak pembatas minimum; hasil yang lebih kecil mengembalikan None.pixels_thresholdjumlah piksel yang diambang minimum; hasil yang lebih kecil mengembalikan None.target_sizeadalah tupel(w, h). ROI diskalakan ke bawah berdasarkan area agar muat di dalam ukuran ini sebelum menjalankan algoritma O(N^2). Default ke(80, 60).Tidak didukung pada citra terkompresi atau citra bayer.
Metode Deteksi¶
- find_blobs(thresholds: List[Tuple[int, int]], invert: bool = False, roi: Tuple[int, int, int, int] | None = None, x_stride: int = 2, y_stride: int = 1, area_threshold: int = 10, pixels_threshold: int = 10, merge: bool = False, margin: int = 0, threshold_cb: Callable | None = None, merge_cb: Callable | None = None, x_hist_bins_max: int = 0, y_hist_bins_max: int = 0) List[blob]¶
Menemukan semua blob (wilayah piksel yang terhubung yang melewati uji ambang batas) dalam citra dan mengembalikan daftar objek
image.blob.thresholdsadalah daftar tupel(lo, hi)untuk citra grayscale, atau tupel(l_lo, l_hi, a_lo, a_hi, b_lo, b_hi)untuk citra RGB565 (channel LAB). Hingga 32 tupel dapat diteruskan. Nilai min/max yang tertukar diperbaiki secara otomatis; komponen yang hilang default ke rentang maksimum.invertmembalikkan pencocokan ambang batas.roiadalah tupel persegi panjang wilayah-yang-diminati (x, y, w, h). Default ke persegi panjang citra.x_stridedany_stridemengontrol berapa banyak piksel yang dilewati saat mencari blob. Tingkatkan jika blob diketahui berukuran besar.area_thresholdarea kotak pembatas minimum; blob yang lebih kecil difilter.pixels_thresholdjumlah piksel yang diambang minimum; blob yang lebih kecil difilter.mergejika True menggabungkan blob yang persegi panjang pembatasnya berpotongan.marginmemperbesar/memperkecil persegi panjang pembatas yang digunakan untuk perpotongan. Blob yang digabungkan melakukan OR pada vektor bitcodemereka (satu bit per ambang batas).threshold_cbdipanggil per blob setelah pengambangan; kembalikan True untuk mempertahankan, False untuk memfilter.merge_cbdipanggil per pasang blob yang akan digabungkan; kembalikan True untuk mengizinkan penggabungan, False untuk mencegahnya.x_hist_bins_maxjika bukan nol, mengisi setiap blob dengan proyeksi x_histogram menggunakan sejumlah bin ini.y_hist_bins_maxjika bukan nol, mengisi setiap blob dengan proyeksi y_histogram menggunakan sejumlah bin ini.Tidak didukung pada citra terkompresi atau citra bayer.
- find_lines(roi: Tuple[int, int, int, int] | None = None, x_stride: int = 2, y_stride: int = 1, threshold: int = 1000, theta_margin: int = 25, rho_margin: int = 25) List[line]¶
Menemukan semua garis tak terbatas dalam citra menggunakan transformasi hough. Mengembalikan daftar objek
image.line.roiadalah tupel persegi panjang wilayah-yang-diminati (x, y, w, h). Default ke persegi panjang citra.x_stridedany_stridemengontrol berapa banyak piksel yang dilewati selama transformasi hough.thresholdmagnitudo garis minimum (jumlah magnitudo sobel sepanjang garis); garis di bawah ini difilter keluar.theta_margindanrho_marginmengontrol penggabungan: garis dalam ambang batas ini digabungkan.Tidak didukung pada citra terkompresi atau citra bayer.
Metode ini tidak tersedia di OpenMV Cam M4.
- find_line_segments(roi: Tuple[int, int, int, int] | None = None, merge_distance: int = 0, max_theta_difference: int = 15) List[line]¶
Menemukan segmen garis dalam citra. Mengembalikan daftar objek
image.line.roiadalah tupel persegi panjang wilayah-yang-diminati (x, y, w, h). Default ke persegi panjang citra.merge_distanceadalah pemisahan piksel maksimum antara dua segmen yang akan digabungkan.max_theta_differenceadalah perbedaan theta maksimum dalam derajat antara segmen yang akan digabungkan.Metode ini tidak tersedia di OpenMV Cam M4.
- find_circles(roi: Tuple[int, int, int, int] | None = None, x_stride: int = 2, y_stride: int = 1, threshold: int = 2000, x_margin: int = 10, y_margin: int = 10, r_margin: int = 10, r_min: int = 2, r_max: int | None = None, r_step: int = 2) List[circle]¶
Menemukan lingkaran dalam citra menggunakan transformasi hough. Mengembalikan daftar objek
image.circle.roiadalah tupel persegi panjang wilayah-yang-diminati (x, y, w, h). Default ke persegi panjang citra.x_stridedany_stridemengontrol berapa banyak piksel yang dilewati selama transformasi hough.thresholdmagnitudo lingkaran minimum (jumlah magnitudo sobel sepanjang lingkaran); lingkaran di bawah ini difilter keluar.x_margin,y_margin, danr_marginmengontrol penggabungan: lingkaran dalam ambang batas ini digabungkan.r_minradius lingkaran minimum. Default ke 2.r_maxradius lingkaran maksimum. Default kemin(roi.w/2, roi.h/2).r_stepukuran langkah radius. Default ke 2.Metode ini tidak tersedia di OpenMV Cam M4.
- find_rects(roi: Tuple[int, int, int, int] | None = None, threshold: int = 1000) List[rect]¶
Menemukan persegi panjang dalam citra menggunakan algoritma deteksi quad apriltag. Mengembalikan daftar objek
image.rect.roiadalah tupel persegi panjang wilayah-yang-diminati (x, y, w, h). Default ke persegi panjang citra.thresholdmagnitudo tepi minimum (jumlah magnitudo sobel sepanjang tepi persegi panjang); persegi panjang di bawah ini difilter keluar.Metode ini tidak tersedia di OpenMV Cam M4.
- find_qrcodes(roi: Tuple[int, int, int, int] | None = None) List[qrcode]¶
Menemukan semua qrcode dalam
roidan mengembalikan daftar objekimage.qrcode.roiadalah tupel persegi panjang wilayah-yang-diminati (x, y, w, h). Default ke persegi panjang citra.Metode ini tidak tersedia di OpenMV Cam M4.
- find_apriltags(roi: Tuple[int, int, int, int] | None = None, families: int = TAG36H11, fx: float | None = None, fy: float | None = None, cx: float | None = None, cy: float | None = None) List[apriltag]¶
Menemukan semua apriltag dalam
roidan mengembalikan daftar objekimage.apriltag.roiadalah tupel persegi panjang wilayah-yang-diminati (x, y, w, h). Default ke persegi panjang citra.familiesadalah bitmask dari keluarga tag yang akan didekode. Ini adalah OR logis dari:Default ke
image.TAG36H11. Waktu deteksi skala dengan jumlah keluarga yang diaktifkan.fxdanfyadalah panjang fokus kamera X dan Y dalam piksel.cxdancyadalah pusat citra, biasanyaimage.width()/2danimage.height()/2.Tidak didukung pada citra terkompresi.
Metode ini tidak tersedia di OpenMV Cam M4.
- find_datamatrices(roi: Tuple[int, int, int, int] | None = None, effort: int = 200) List[datamatrix]¶
Menemukan semua datamatrix dalam
roidan mengembalikan daftar objekimage.datamatrix.roiadalah tupel persegi panjang wilayah-yang-diminati (x, y, w, h). Default ke persegi panjang citra.effortmengontrol berapa banyak waktu yang dihabiskan untuk mencoba menemukan kecocokan matriks data. Nilai yang lebih tinggi meningkatkan deteksi dengan biaya laju bingkai. Nilai di bawah ~160 gagal mendeteksi; nilai di atas ~240 menghasilkan hasil yang semakin berkurang. Default ke 200.Metode ini tidak tersedia di OpenMV Cam M4.
- find_barcodes(roi: Tuple[int, int, int, int] | None = None) List[barcode]¶
Menemukan semua barcode 1D dalam
roidan mengembalikan daftar objekimage.barcode. Memindai baik secara horizontal maupun vertikal.Jenis barcode yang didukung:
image.EAN2,image.EAN5,image.EAN8,image.UPCE,image.ISBN10,image.UPCA,image.EAN13,image.ISBN13,image.I25,image.DATABAR(RSS-14),image.DATABAR_EXP(RSS-Expanded),image.CODABAR,image.CODE39,image.PDF417,image.CODE93,image.CODE128.roiadalah tupel persegi panjang wilayah-yang-diminati (x, y, w, h). Default ke persegi panjang citra.Metode ini tidak tersedia di OpenMV Cam M4.
- find_displacement(template: Image, roi: Tuple[int, int, int, int] | None = None, template_roi: Tuple[int, int, int, int] | None = None, logpolar: bool = False, fix_rotation_scale: bool = False) displacement¶
Menemukan offset translasi citra ini dari
templatemenggunakan korelasi fasa. Mengembalikan objekimage.displacement.roiadalah persegi panjang wilayah-yang-diminati (x, y, w, h). Default ke persegi panjang citra.template_roiadalah wilayah-yang-diminati template. Default ke persegi panjang citra template.roidantemplate_roiharus memiliki lebar dan tinggi yang sama.logpolarjika True mengembalikan perubahan rotasi/skala alih-alih translasi x/y.fix_rotation_scalejika True, menghitung perpindahan setelah menyelaraskan rotasi dan skala (hanya bermakna ketikalogpolar=False).Catatan
Gunakan metode ini pada ukuran citra pangkat-2 (misalnya
sensor.B64X64).Tidak didukung pada citra terkompresi atau citra bayer. Tidak tersedia di OpenMV Cam M4.
- find_template(template: Image, threshold: float, roi: Tuple[int, int, int, int] | None = None, step: int = 2, search: int = SEARCH_EX) Tuple[int, int, int, int] | None¶
Mencoba menemukan lokasi pertama dalam citra di mana
templatecocok menggunakan Korelasi Silang Ternormalisasi. Mengembalikan tupel kotak pembatas (x, y, w, h), atau None.templateadalah citra grayscale untuk dicocokkan dengan citra ini.thresholdadalah nilai (0,0-1,0). Nilai yang lebih tinggi mengurangi positif palsu dan deteksi; nilai yang lebih rendah sebaliknya.roiadalah tupel persegi panjang wilayah-yang-diminati (x, y, w, h). Default ke persegi panjang citra.stepadalah jumlah piksel yang dilewati saat mencari (hanya digunakan dalam modeimage.SEARCH_EX).searchadalahimage.SEARCH_DS(pencarian diamond yang lebih cepat) atauimage.SEARCH_EX(pencarian menyeluruh).Hanya berfungsi pada citra grayscale.
- find_features(cascade: Cascade, threshold: float = 0.5, scale: float = 1.5, roi: Tuple[int, int, int, int] | None = None) List[Tuple[int, int, int, int]]¶
Mencari citra untuk area yang cocok dengan Haar cascade yang diteruskan dan mengembalikan daftar tupel kotak pembatas (x, y, w, h). Mengembalikan daftar kosong jika tidak ada fitur yang ditemukan.
cascadeadalah objek Haar Cascade (lihatimage.HaarCascade()).threshold(0,0-1,0). Nilai yang lebih rendah meningkatkan tingkat deteksi dan tingkat positif palsu.scaleharus lebih besar dari 1,0. Nilai yang lebih tinggi berjalan lebih cepat tetapi menghasilkan kecocokan yang lebih buruk.roiadalah tupel persegi panjang wilayah-yang-diminati (x, y, w, h). Default ke persegi panjang citra.
- find_eye(roi: Tuple[int, int, int, int]) Tuple[int, int]¶
Mencari pupil dalam tupel wilayah-yang-diminati (x, y, w, h) di sekitar mata. Mengembalikan lokasi (x, y) dari pupil, atau (0, 0) jika tidak ada yang ditemukan.
roiadalah tupel persegi panjang wilayah-yang-diminati (x, y, w, h).Hanya berfungsi pada citra grayscale.
- find_lbp(roi: Tuple[int, int, int, int]) lbp_descriptor¶
Mengekstrak titik kunci LBP (local-binary-patterns) dari wilayah-yang-diminati. Gunakan
image.match_descriptor()untuk membandingkan dua deskriptor.roiadalah tupel persegi panjang wilayah-yang-diminati (x, y, w, h).Hanya berfungsi pada citra grayscale.
- find_keypoints(roi: Tuple[int, int, int, int] | None = None, threshold: int = 20, normalized: bool = False, scale_factor: float = 1.5, max_keypoints: int = 100, corner_detector: int = CORNER_AGAST) kp_descriptor | None¶
Mengekstrak titik kunci ORB dari wilayah-yang-diminati. Gunakan
image.match_descriptor()untuk membandingkan dua deskriptor. Mengembalikan None jika tidak ada titik kunci yang ditemukan.roiadalah tupel persegi panjang wilayah-yang-diminati (x, y, w, h). Default ke persegi panjang citra.threshold(0-255) mengontrol jumlah sudut yang diekstrak. Ambang batas yang lebih rendah menghasilkan lebih banyak sudut. Gunakan ~20 untuk AGAST, ~60-80 untuk FAST.normalizedjika True, menonaktifkan ekstraksi titik kunci multi-resolusi.scale_factorharus lebih besar dari 1,0. Nilai yang lebih tinggi berjalan lebih cepat tetapi menghasilkan kecocokan yang lebih buruk.max_keypointsadalah jumlah maksimum titik kunci yang akan dipertahankan.corner_detectoradalahimage.CORNER_FASTatauimage.CORNER_AGAST.Hanya berfungsi pada citra grayscale.
- find_edges(edge_type: int, threshold: Tuple[int, int] = (100, 200)) Image¶
Mengubah citra menjadi hitam dan putih hanya menyisakan tepi sebagai piksel putih.
image.EDGE_SIMPLE - Algoritma filter high pass yang di-threshold sederhana.
image.EDGE_CANNY - Algoritma deteksi tepi Canny.
thresholdadalah tupel dua nilai yang berisi ambang batas rendah dan ambang batas tinggi. Anda dapat mengontrol kualitas tepi dengan menyesuaikan nilai-nilai ini. Default ke (100, 200).Hanya berfungsi pada citra grayscale.
- find_hog(roi: Tuple[int, int, int, int] | None = None, size: int = 8) Image¶
Mengganti piksel di ROI dengan garis HOG (histogram of orientated gradients).
roiadalah tupel persegi panjang wilayah-yang-diminati (x, y, w, h). Jika tidak ditentukan, sama dengan persegi panjang citra. Hanya piksel dalamroiyang dioperasikan.Hanya berfungsi pada citra grayscale.
Metode ini tidak tersedia di OpenMV Cam M4.
- stereo_disparity(reversed: bool = False, max_disparity: int = 64, threshold: int = 64) Image¶
Mengambil citra grayscale double-lebar yang berisi output dari dua sensor kamera berdampingan dan mengganti setengahnya dengan citra disparitas stereo (setiap piksel mewakili kedalaman). Misalnya untuk dua kamera 320x240 teruskan citra 640x240.
reversedSecara default citra kiri dibandingkan dengan yang kanan dan citra kanan diganti. Atur True untuk membandingkan kanan->kiri dan mengganti citra kiri.max_disparityadalah jarak maksimum (1-255) untuk mencari blok piksel yang cocok menggunakan sum-of-absolute differences. Nilai yang lebih besar membutuhkan waktu eksponensial lebih lama tetapi menghasilkan output berkualitas lebih tinggi.thresholdjika jumlah perbedaan absolut antara dua blok kurang dari atau sama dengan ambang batas ini, mereka dianggap cocok.
- selective_search(threshold: int = 500, size: int = 20, a1: float = 1.0, a2: float = 1.0, a3: float = 1.0) List[Tuple[int, int, int, int]]¶
Menjalankan pencarian selektif pada citra dan mengembalikan daftar tupel kotak pembatas (x, y, w, h) dari proposal objek.
thresholdadalah ambang batas segmentasi; nilai yang lebih tinggi menghasilkan wilayah yang lebih sedikit/lebih besar.sizeadalah ukuran wilayah minimum setelah penggabungan.a1,a2,a3adalah bobot kesamaan warna/tekstur/ukuran yang digunakan saat menggabungkan wilayah.