lớp Image -- đối tượng Image

Image là kiểu dữ liệu trung tâm của module image -- một bộ đệm điểm ảnh trong bộ nhớ mà mọi thao tác vẽ, mọi bộ lọc, mọi phép biến đổi hình học và mọi thao tác trích xuất đặc trưng đều hoạt động trên đó. Mỗi khung hình từ csi.CSI.snapshot() đều là một Image; tương tự với mọi khung hình được tải từ đĩa, giải mã từ JPEG hoặc PNG, cấp phát từ ndarray kiểu numpy, hoặc khởi tạo như một canvas vẽ trống.

Một Image được mô tả bởi ba số -- width, height, và pixformat -- cùng với một bộ đệm điểm ảnh liên tục. Định dạng điểm ảnh xác định cả cách bố trí trong bộ nhớ lẫn các thao tác khả dụng:

  • BINARY (1 bpp) -- 1 bit mỗi điểm ảnh; dùng cho hình thái học và phân ngưỡng.

  • GRAYSCALE (8 bpp) -- 1 byte mỗi điểm ảnh; định dạng chuẩn cho hầu hết CV (AprilTag, cạnh, ORB, optical flow).

  • RGB565 (16 bpp) -- 2 byte mỗi điểm ảnh (5R/6G/5B); định dạng màu sắc mặc định.

  • BAYER (8 bpp) -- dữ liệu Bayer-mosaic thô trực tiếp từ cảm biến. Hầu hết các phương pháp CV không khả dụng trên ảnh Bayer; cần debayer sang GRAYSCALE / RGB565 trước.

  • YUV422 (16 bpp) -- màu sắc chroma-subsampled 4:2:2, hai byte mỗi điểm ảnh. Chỉ một số phương pháp hoạt động trực tiếp trên YUV422.

  • JPEG / PNG -- bộ đệm nén. Các thao tác ở cấp điểm ảnh yêu cầu to_grayscale() hoặc to_rgb565() trước.

Nguồn gốc của các đối tượng Image

Có bốn cách để lấy một Image:

  • Từ bộ đệm khung hình camera -- csi.CSI().snapshot() trả về khung hình được chụp tiếp theo. Đối tượng được trả về là một wrapper mỏng bao quanh bộ nhớ bộ đệm khung hình của camera, vì vậy mọi thao tác vẽ / lọc trên nó sẽ thay đổi những gì được gửi đến bản xem trước IDE và màn hình hiển thị.

  • Từ tệp -- truyền một chuỗi đường dẫn cho hàm tạo Image. BMP, PGM, PPM, JPEG và PNG được giải mã trực tiếp vào RAM (hoặc vào bộ đệm khung hình camera nếu copy_to_fb=True).

  • Từ ndarray -- truyền một mảng float32 (h, w) hoặc (h, w, 3). Các điểm ảnh được co giãn từ 0.0 -- 255.0 thành GRAYSCALE hoặc RGB565 tương ứng.

  • Trống -- truyền (width, height, pixformat) để cấp phát một bề mặt vẽ điền zero. Đối với các định dạng điểm ảnh nén (JPEG / PNG) cần có đối số buffer= chứa luồng byte nén.

Vòng lặp điển hình: chụp - xử lý - hiển thị

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.

Lập chỉ mục, độ dài, lặp và truy cập kiểu bytes

  • Lập chỉ mục -- img[i] đọc điểm ảnh i (tuyến tính, theo hàng chính). img[i] = value ghi vào đó. Điểm ảnh Grayscale / Bayer là số nguyên 8-bit, điểm ảnh RGB565 / YUV422 là số nguyên đóng gói 16-bit, điểm ảnh nhị phân là 0 / 1. Đối với ảnh JPEG / PNG, không gian chỉ mục là luồng byte nén, không phải điểm ảnh.

  • Độ dài -- len(img) trả về số điểm ảnh đối với định dạng không nén hoặc số byte đối với định dạng nén.

  • Lặp -- for px in img: ... duyệt mảng điểm ảnh theo thứ tự giống như lập chỉ mục [].

  • Kiểu bytes -- Image cung cấp giao thức bộ đệm đọc, vì vậy bạn có thể truyền nó trực tiếp cho bất kỳ thứ gì nhận bytes / bytearray (ví dụ: uart.write(img), socket.send(img), hashlib.sha256(img)). Dùng bytearray() để lấy quyền truy cập đọc/ghi.

Cờ gợi ý (Hint flags)

Nhiều phương thức Image chấp nhận đối số hint là phép OR logic của các cờ sau:

class image.Image(arg: str | int | ndarray, height: int = -1, pixformat: int = -1, *, buffer: bytes | bytearray | memoryview | None = None, copy_to_fb: bool = False)

Nếu arg là một chuỗi thì lệnh này tạo một đối tượng ảnh mới từ tệp tại đường dẫn arg. Hỗ trợ tải các tệp ảnh bmp/pgm/ppm/jpg/jpeg/png từ đĩa. Nếu copy_to_fb là true thì ảnh được sao chép vào bộ đệm khung hình thay vì được cấp phát trên heap.

Nếu arg là một ndarray thì lệnh này tạo một đối tượng ảnh mới từ ndarray đó. Các đối tượng ndarray có shape (w, h) được coi là ảnh thang xám, (w, h, 3) được coi là ảnh RGB565. Hiện chỉ hỗ trợ ndarrays kiểu float32. Khi tạo ảnh theo cách này nếu bạn truyền đối số buffer thì nó sẽ được dùng để lưu trữ dữ liệu ảnh thay vì cấp phát không gian trên heap. Nếu copy_to_fb là true thì ảnh được sao chép vào bộ đệm khung hình thay vì được cấp phát trên heap hoặc sử dụng buffer.

Nếu argint thì nó được coi là chiều rộng của ảnh mới và cần có giá trị height và giá trị format theo sau để tạo một đối tượng ảnh trống mới. format có thể là bất kỳ giá trị pixformat ảnh nào như image.GRAYSCALE. Ảnh sẽ được khởi tạo về tất cả các giá trị zero. Lưu ý rằng giá trị buffer được yêu cầu cho các định dạng ảnh nén. buffer được coi là nguồn dữ liệu ảnh khi tạo ảnh theo cách này. Nếu dùng với copy_to_fb thì dữ liệu từ buffer sẽ được sao chép vào bộ đệm khung hình. Nếu muốn tạo ảnh JPEG từ đối tượng JPEG bytes() hoặc bytearray() bạn có thể truyền width, height, image.JPEG cho JPEG cùng với việc đặt buffer thành luồng byte JPEG để tạo ảnh JPEG.

Ảnh hỗ trợ ký hiệu "[]". Dùng image[index] = 8/16-bit value để gán một điểm ảnh hoặc image[index] để lấy một điểm ảnh, kết quả sẽ là giá trị 8-bit cho ảnh thang xám/bayer hoặc giá trị 16-bit cho ảnh RGB565/YUV. Ảnh nhị phân trả về giá trị 1-bit.

Đối với ảnh JPEG, ký hiệu "[]" cho phép bạn truy cập blob ảnh JPEG nén dưới dạng mảng byte. Tuy nhiên, việc đọc và ghi vào mảng dữ liệu là không minh bạch vì ảnh JPEG là các luồng byte nén.

Ảnh cũng hỗ trợ các thao tác bộ đệm đọc. Bạn có thể truyền ảnh cho tất cả các loại hàm MicroPython như thể ảnh là một đối tượng mảng byte. Đặc biệt, nếu muốn truyền ảnh, bạn chỉ cần truyền nó cho các hàm ghi UART/SPI/I2C để tự động truyền đi.

Các phương thức cơ bản

width() int

Trả về chiều rộng ảnh tính bằng điểm ảnh.

height() int

Trả về chiều cao ảnh tính bằng điểm ảnh.

format() int

Trả về image.GRAYSCALE cho ảnh thang xám, image.RGB565 cho ảnh RGB565, image.BAYER cho ảnh mẫu bayer, và image.JPEG cho ảnh JPEG.

size() int

Trả về kích thước ảnh tính bằng byte.

bytearray() bytearray

Trả về đối tượng bytearray trỏ đến dữ liệu ảnh để truy cập đọc/ghi ở cấp byte.

Ghi chú

Các đối tượng ảnh được tự động chuyển đổi thành đối tượng bytes khi được truyền cho driver MicroPython yêu cầu đối tượng kiểu bytes. Đây là quyền truy cập chỉ đọc. Gọi bytearray() để có quyền truy cập đọc/ghi.

get_pixel(x: int, y: int, rgbtuple: bool | None = None) int | Tuple[int, int, int]

Đối với ảnh thang xám: Trả về giá trị điểm ảnh thang xám tại vị trí (x, y). Đối với ảnh RGB565: Trả về tuple RGB888 (r, g, b) tại vị trí (x, y). Đối với ảnh mẫu bayer: Trả về giá trị điểm ảnh tại vị trí (x, y).

Trả về None nếu x hoặc y nằm ngoài ảnh.

xy có thể được truyền riêng lẻ hoặc dưới dạng tuple.

rgbtuple nếu True thì phương thức này trả về một tuple RGB888. Ngược lại, phương thức này trả về giá trị số nguyên của điểm ảnh cơ bản. Tức là đối với ảnh RGB565, phương thức này trả về giá trị RGB565. Mặc định là True cho ảnh RGB565 và False trong các trường hợp khác.

Không hỗ trợ trên ảnh nén.

Ghi chú

Image.get_pixel()Image.set_pixel() là các phương thức duy nhất cho phép bạn thao tác với ảnh mẫu bayer. Ảnh mẫu bayer là các ảnh thực tế trong đó các điểm ảnh trong ảnh là R/G/R/G/v.v. cho các hàng chẵn và G/B/G/B/v.v. cho các hàng lẻ. Mỗi điểm ảnh là 8-bit. Nếu bạn gọi phương thức này với rgbtuple được đặt thì Image.get_pixel() sẽ debayer ảnh nguồn tại vị trí điểm ảnh đó và trả về một tuple RGB888 hợp lệ cho vị trí điểm ảnh.

set_pixel(x: int, y: int, pixel: int | Tuple[int, int, int]) Image

Đối với ảnh thang xám: Đặt điểm ảnh tại vị trí (x, y) thành giá trị thang xám pixel. Đối với ảnh RGB565: Đặt điểm ảnh tại vị trí (x, y) thành tuple RGB888 (r, g, b) pixel. Đối với ảnh mẫu bayer: Đặt giá trị điểm ảnh tại vị trí (x, y) thành giá trị pixel.

Trả về đối tượng ảnh để bạn có thể gọi phương thức khác sử dụng ký hiệu ..

xy có thể được truyền riêng lẻ hoặc dưới dạng tuple.

pixel có thể là tuple RGB888 (r, g, b) hoặc giá trị điểm ảnh cơ bản (tức là giá trị RGB565 cho ảnh RGB565 hoặc giá trị 8-bit cho ảnh thang xám).

Không hỗ trợ trên ảnh nén.

Ghi chú

Image.get_pixel()Image.set_pixel() là các phương thức duy nhất cho phép bạn thao tác với ảnh mẫu bayer. Ảnh mẫu bayer là các ảnh thực tế trong đó các điểm ảnh trong ảnh là R/G/R/G/v.v. cho các hàng chẵn và G/B/G/B/v.v. cho các hàng lẻ. Mỗi điểm ảnh là 8-bit. Nếu bạn gọi phương thức này với một tuple RGB888 thì giá trị thang xám của tuple RGB888 đó sẽ được trích xuất và đặt cho vị trí điểm ảnh.

Các phương thức chuyển đổi

to_ndarray(dtype: str, buffer: bytes | bytearray | memoryview | None = None) ndarray

Trả về đối tượng ndarray được tạo từ ảnh. Hiện chỉ hoạt động cho ảnh GRAYSCALE hoặc RGB565.

dtype có thể là b, B, hoặc f để tạo ndarray có dấu 8-bit, không dấu 8-bit, hoặc dấu phẩy động 32-bit. Ảnh GRAYSCALE được chuyển đổi trực tiếp thành đối tượng ndarray không dấu 8-bit. Đối với đối tượng ndarray có dấu 8-bit, các giá trị (0:255) được ánh xạ thành (-127:128). Đối với đối tượng ndarray float 32-bit, các giá trị được ánh xạ thành (0.0:255.0). Ảnh RGB565 được chuyển đổi thành đối tượng ndarray 3 kênh và quy trình tương tự như mô tả trên cho ảnh GRAYSCALE được áp dụng cho từng kênh tùy thuộc vào dtype. Lưu ý rằng dtype cũng chấp nhận các giá trị số nguyên (ví dụ: ord()) của b, B, và f tương ứng.

buffer nếu không phải None là đối tượng bytearray để sử dụng làm bộ đệm cho ndarray. Nếu None thì bộ đệm mới được cấp phát trên heap để lưu trữ dữ liệu ảnh ndarray. Bạn có thể dùng đối số buffer để cấp phát trực tiếp ndarray trong bộ đệm được cấp phát trước, tiết kiệm một lần cấp phát heap và một thao tác sao chép.

ndarray được trả về có shape (height, width) cho ảnh GRAYSCALE và (height, width, 3) cho ảnh 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

Chuyển đổi ảnh thành ảnh bitmap (1 bit mỗi điểm ảnh).

x_scale kiểm soát mức độ co giãn ảnh hiển thị theo chiều x (float). Nếu giá trị này âm thì ảnh sẽ được lật theo chiều ngang. Lưu ý rằng nếu y_scale không được chỉ định thì nó sẽ khớp với x_scale để duy trì tỷ lệ khung hình.

y_scale kiểm soát mức độ co giãn ảnh hiển thị theo chiều y (float). Nếu giá trị này âm thì ảnh sẽ được lật theo chiều dọc. Lưu ý rằng nếu x_scale không được chỉ định thì nó sẽ khớp với x_scale để duy trì tỷ lệ khung hình.

roi là tuple hình chữ nhật vùng quan tâm (ROI) (x, y, w, h) của ảnh nguồn để vẽ. Điều này cho phép bạn trích xuất chỉ các điểm ảnh trong ROI để co giãn và vẽ lên ảnh đích.

rgb_channel là kênh RGB (0=R, G=1, B=2) để trích xuất từ ảnh RGB565 (nếu được truyền) và để hiển thị lên ảnh đích. Ví dụ: nếu bạn truyền rgb_channel=1 thì kênh xanh lá của ảnh RGB565 nguồn sẽ được trích xuất và vẽ theo thang xám lên ảnh đích.

alpha kiểm soát mức độ pha trộn ảnh nguồn vào ảnh đích. Giá trị 255 vẽ ảnh nguồn không trong suốt trong khi giá trị nhỏ hơn 255 tạo ra sự pha trộn giữa ảnh nguồn và đích. 0 không tạo ra bất kỳ thay đổi nào cho ảnh đích.

color_palette nếu không phải None có thể là một enum bảng màu sắc hoặc ảnh RGB565 tổng cộng 256 điểm ảnh để sử dụng làm bảng tra cứu màu sắc dựa trên giá trị thang xám của ảnh nguồn. Được áp dụng sau khi trích xuất rgb_channel nếu được sử dụng.

alpha_palette nếu không phải None có thể là ảnh GRAYSCALE tổng cộng 256 điểm ảnh để sử dụng làm bảng alpha điều chỉnh giá trị alpha của ảnh nguồn đang được vẽ ở cấp điểm ảnh, cho phép bạn kiểm soát chính xác giá trị alpha của các điểm ảnh dựa trên giá trị thang xám của chúng. Giá trị điểm ảnh 255 trong bảng tra cứu alpha là không trong suốt, bất kỳ giá trị nào nhỏ hơn 255 sẽ trở nên trong suốt hơn cho đến 0. Được áp dụng sau khi trích xuất rgb_channel nếu được sử dụng.

hint là phép OR logic của các cờ được liệt kê trong Hint flags (ngoại trừ image.BLACK_BACKGROUND không được hỗ trợ ở đây).

transformndarray 3x3 được sử dụng để thực hiện phép biến đổi phối cảnh trên ảnh. Hiện chỉ được hỗ trợ trên OpenMV Cam N6 vì nó có GPU có thể thực hiện điều này bằng phần cứng.

copy nếu True tạo một bản sao sâu (deep-copy) trên heap của ảnh đã được chuyển đổi thay vì chuyển đổi ảnh gốc tại chỗ.

copy_to_fb nếu True thì ảnh được tải trực tiếp vào bộ đệm khung hình. copy_to_fb có ưu tiên hơn copy. Điều này không có hiệu ứng đặc biệt nếu ảnh đã ở trong bộ đệm khung hình.

Ghi chú

Ảnh bitmap giống như ảnh thang xám nhưng chỉ có hai giá trị điểm ảnh - 0 và 1. Ngoài ra, ảnh bitmap được đóng gói sao cho chúng chỉ lưu 1 bit mỗi điểm ảnh khiến chúng rất nhỏ. Thư viện ảnh OpenMV cho phép sử dụng ảnh bitmap ở tất cả các nơi mà ảnh sensor.GRAYSCALEsensor.RGB565 có thể được sử dụng. Tuy nhiên, nhiều thao tác khi áp dụng trên ảnh bitmap không có ý nghĩa vì ảnh bitmap chỉ có 2 giá trị. OpenMV khuyến nghị sử dụng ảnh bitmap cho các giá trị mask trong các thao tác vì chúng dễ dàng vừa vặn trên heap MicroPython. Cuối cùng, các giá trị điểm ảnh bitmap 0 và 1 được diễn giải là đen và trắng khi được áp dụng cho ảnh sensor.GRAYSCALE hoặc sensor.RGB565. Thư viện tự động xử lý chuyển đổi.

Trả về đối tượng ảnh để bạn có thể gọi phương thức khác sử dụng ký hiệu ..

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

Chuyển đổi ảnh thành ảnh thang xám (8 bit mỗi điểm ảnh).

x_scale kiểm soát mức độ co giãn ảnh hiển thị theo chiều x (float). Nếu giá trị này âm thì ảnh sẽ được lật theo chiều ngang. Lưu ý rằng nếu y_scale không được chỉ định thì nó sẽ khớp với x_scale để duy trì tỷ lệ khung hình.

y_scale kiểm soát mức độ co giãn ảnh hiển thị theo chiều y (float). Nếu giá trị này âm thì ảnh sẽ được lật theo chiều dọc. Lưu ý rằng nếu x_scale không được chỉ định thì nó sẽ khớp với x_scale để duy trì tỷ lệ khung hình.

roi là tuple hình chữ nhật vùng quan tâm (ROI) (x, y, w, h) của ảnh nguồn để vẽ. Điều này cho phép bạn trích xuất chỉ các điểm ảnh trong ROI để co giãn và vẽ lên ảnh đích.

rgb_channel là kênh RGB (0=R, G=1, B=2) để trích xuất từ ảnh RGB565 (nếu được truyền) và để hiển thị lên ảnh đích. Ví dụ: nếu bạn truyền rgb_channel=1 thì kênh xanh lá của ảnh RGB565 nguồn sẽ được trích xuất và vẽ theo thang xám lên ảnh đích.

alpha kiểm soát mức độ pha trộn ảnh nguồn vào ảnh đích. Giá trị 255 vẽ ảnh nguồn không trong suốt trong khi giá trị nhỏ hơn 255 tạo ra sự pha trộn giữa ảnh nguồn và đích. 0 không tạo ra bất kỳ thay đổi nào cho ảnh đích.

color_palette nếu không phải None có thể là một enum bảng màu sắc hoặc ảnh RGB565 tổng cộng 256 điểm ảnh để sử dụng làm bảng tra cứu màu sắc dựa trên giá trị thang xám của ảnh nguồn. Được áp dụng sau khi trích xuất rgb_channel nếu được sử dụng.

alpha_palette nếu không phải None có thể là ảnh GRAYSCALE tổng cộng 256 điểm ảnh để sử dụng làm bảng alpha điều chỉnh giá trị alpha của ảnh nguồn đang được vẽ ở cấp điểm ảnh, cho phép bạn kiểm soát chính xác giá trị alpha của các điểm ảnh dựa trên giá trị thang xám của chúng. Giá trị điểm ảnh 255 trong bảng tra cứu alpha là không trong suốt, bất kỳ giá trị nào nhỏ hơn 255 sẽ trở nên trong suốt hơn cho đến 0. Được áp dụng sau khi trích xuất rgb_channel nếu được sử dụng.

hint là phép OR logic của các cờ được liệt kê trong Hint flags (ngoại trừ image.BLACK_BACKGROUND không được hỗ trợ ở đây).

transformndarray 3x3 được sử dụng để thực hiện phép biến đổi phối cảnh trên ảnh. Hiện chỉ được hỗ trợ trên OpenMV Cam N6 vì nó có GPU có thể thực hiện điều này bằng phần cứng.

copy nếu True tạo một bản sao sâu (deep-copy) trên heap của ảnh đã được chuyển đổi thay vì chuyển đổi ảnh gốc tại chỗ.

copy_to_fb nếu True thì ảnh được tải trực tiếp vào bộ đệm khung hình. copy_to_fb có ưu tiên hơn copy. Điều này không có hiệu ứng đặc biệt nếu ảnh đã ở trong bộ đệm khung hình.

Trả về đối tượng ảnh để bạn có thể gọi phương thức khác sử dụng ký hiệu ..

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

Chuyển đổi ảnh thành ảnh RGB565 (16 bit mỗi điểm ảnh).

x_scale kiểm soát mức độ co giãn ảnh hiển thị theo chiều x (float). Nếu giá trị này âm thì ảnh sẽ được lật theo chiều ngang. Lưu ý rằng nếu y_scale không được chỉ định thì nó sẽ khớp với x_scale để duy trì tỷ lệ khung hình.

y_scale kiểm soát mức độ co giãn ảnh hiển thị theo chiều y (float). Nếu giá trị này âm thì ảnh sẽ được lật theo chiều dọc. Lưu ý rằng nếu x_scale không được chỉ định thì nó sẽ khớp với x_scale để duy trì tỷ lệ khung hình.

roi là tuple hình chữ nhật vùng quan tâm (ROI) (x, y, w, h) của ảnh nguồn để vẽ. Điều này cho phép bạn trích xuất chỉ các điểm ảnh trong ROI để co giãn và vẽ lên ảnh đích.

rgb_channel là kênh RGB (0=R, G=1, B=2) để trích xuất từ ảnh RGB565 (nếu được truyền) và để hiển thị lên ảnh đích. Ví dụ: nếu bạn truyền rgb_channel=1 thì kênh xanh lá của ảnh RGB565 nguồn sẽ được trích xuất và vẽ theo thang xám lên ảnh đích.

alpha kiểm soát mức độ pha trộn ảnh nguồn vào ảnh đích. Giá trị 255 vẽ ảnh nguồn không trong suốt trong khi giá trị nhỏ hơn 255 tạo ra sự pha trộn giữa ảnh nguồn và đích. 0 không tạo ra bất kỳ thay đổi nào cho ảnh đích.

color_palette nếu không phải None có thể là một enum bảng màu sắc hoặc ảnh RGB565 tổng cộng 256 điểm ảnh để sử dụng làm bảng tra cứu màu sắc dựa trên giá trị thang xám của ảnh nguồn. Được áp dụng sau khi trích xuất rgb_channel nếu được sử dụng.

alpha_palette nếu không phải None có thể là ảnh GRAYSCALE tổng cộng 256 điểm ảnh để sử dụng làm bảng alpha điều chỉnh giá trị alpha của ảnh nguồn đang được vẽ ở cấp điểm ảnh, cho phép bạn kiểm soát chính xác giá trị alpha của các điểm ảnh dựa trên giá trị thang xám của chúng. Giá trị điểm ảnh 255 trong bảng tra cứu alpha là không trong suốt, bất kỳ giá trị nào nhỏ hơn 255 sẽ trở nên trong suốt hơn cho đến 0. Được áp dụng sau khi trích xuất rgb_channel nếu được sử dụng.

hint là phép OR logic của các cờ được liệt kê trong Hint flags (ngoại trừ image.BLACK_BACKGROUND không được hỗ trợ ở đây).

transformndarray 3x3 được sử dụng để thực hiện phép biến đổi phối cảnh trên ảnh. Hiện chỉ được hỗ trợ trên OpenMV Cam N6 vì nó có GPU có thể thực hiện điều này bằng phần cứng.

copy nếu True tạo một bản sao sâu (deep-copy) trên heap của ảnh đã được chuyển đổi thay vì chuyển đổi ảnh gốc tại chỗ.

copy_to_fb nếu True thì ảnh được tải trực tiếp vào bộ đệm khung hình. copy_to_fb có ưu tiên hơn copy. Điều này không có hiệu ứng đặc biệt nếu ảnh đã ở trong bộ đệm khung hình.

Trả về đối tượng ảnh để bạn có thể gọi phương thức khác sử dụng ký hiệu ..

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

Chuyển đổi ảnh thành ảnh cầu vồng RGB565 (16 bit mỗi điểm ảnh).

x_scale kiểm soát mức độ co giãn ảnh hiển thị theo chiều x (float). Nếu giá trị này âm thì ảnh sẽ được lật theo chiều ngang. Lưu ý rằng nếu y_scale không được chỉ định thì nó sẽ khớp với x_scale để duy trì tỷ lệ khung hình.

y_scale kiểm soát mức độ co giãn ảnh hiển thị theo chiều y (float). Nếu giá trị này âm thì ảnh sẽ được lật theo chiều dọc. Lưu ý rằng nếu x_scale không được chỉ định thì nó sẽ khớp với x_scale để duy trì tỷ lệ khung hình.

roi là tuple hình chữ nhật vùng quan tâm (ROI) (x, y, w, h) của ảnh nguồn để vẽ. Điều này cho phép bạn trích xuất chỉ các điểm ảnh trong ROI để co giãn và vẽ lên ảnh đích.

rgb_channel là kênh RGB (0=R, G=1, B=2) để trích xuất từ ảnh RGB565 (nếu được truyền) và để hiển thị lên ảnh đích. Ví dụ: nếu bạn truyền rgb_channel=1 thì kênh xanh lá của ảnh RGB565 nguồn sẽ được trích xuất và vẽ theo thang xám lên ảnh đích.

alpha kiểm soát mức độ pha trộn ảnh nguồn vào ảnh đích. Giá trị 255 vẽ ảnh nguồn không trong suốt trong khi giá trị nhỏ hơn 255 tạo ra sự pha trộn giữa ảnh nguồn và đích. 0 không tạo ra bất kỳ thay đổi nào cho ảnh đích.

color_palette nếu không phải None có thể là một enum bảng màu sắc hoặc ảnh RGB565 tổng cộng 256 điểm ảnh để sử dụng làm bảng tra cứu màu sắc dựa trên giá trị thang xám của ảnh nguồn. Được áp dụng sau khi trích xuất rgb_channel nếu được sử dụng.

alpha_palette nếu không phải None có thể là ảnh GRAYSCALE tổng cộng 256 điểm ảnh để sử dụng làm bảng alpha điều chỉnh giá trị alpha của ảnh nguồn đang được vẽ ở cấp điểm ảnh, cho phép bạn kiểm soát chính xác giá trị alpha của các điểm ảnh dựa trên giá trị thang xám của chúng. Giá trị điểm ảnh 255 trong bảng tra cứu alpha là không trong suốt, bất kỳ giá trị nào nhỏ hơn 255 sẽ trở nên trong suốt hơn cho đến 0. Được áp dụng sau khi trích xuất rgb_channel nếu được sử dụng.

hint là phép OR logic của các cờ được liệt kê trong Hint flags (ngoại trừ image.BLACK_BACKGROUND không được hỗ trợ ở đây).

transformndarray 3x3 được sử dụng để thực hiện phép biến đổi phối cảnh trên ảnh. Hiện chỉ được hỗ trợ trên OpenMV Cam N6 vì nó có GPU có thể thực hiện điều này bằng phần cứng.

copy nếu True tạo một bản sao sâu (deep-copy) trên heap của ảnh đã được chuyển đổi thay vì chuyển đổi ảnh gốc tại chỗ.

copy_to_fb nếu True thì ảnh được tải trực tiếp vào bộ đệm khung hình. copy_to_fb có ưu tiên hơn copy. Điều này không có hiệu ứng đặc biệt nếu ảnh đã ở trong bộ đệm khung hình.

Trả về đối tượng ảnh để bạn có thể gọi phương thức khác sử dụng ký hiệu ..

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

Chuyển đổi ảnh thành ảnh ironbow RGB565 (16 bit mỗi điểm ảnh).

x_scale kiểm soát mức độ co giãn ảnh hiển thị theo chiều x (float). Nếu giá trị này âm thì ảnh sẽ được lật theo chiều ngang. Lưu ý rằng nếu y_scale không được chỉ định thì nó sẽ khớp với x_scale để duy trì tỷ lệ khung hình.

y_scale kiểm soát mức độ co giãn ảnh hiển thị theo chiều y (float). Nếu giá trị này âm thì ảnh sẽ được lật theo chiều dọc. Lưu ý rằng nếu x_scale không được chỉ định thì nó sẽ khớp với x_scale để duy trì tỷ lệ khung hình.

roi là tuple hình chữ nhật vùng quan tâm (ROI) (x, y, w, h) của ảnh nguồn để vẽ. Điều này cho phép bạn trích xuất chỉ các điểm ảnh trong ROI để co giãn và vẽ lên ảnh đích.

rgb_channel là kênh RGB (0=R, G=1, B=2) để trích xuất từ ảnh RGB565 (nếu được truyền) và để hiển thị lên ảnh đích. Ví dụ: nếu bạn truyền rgb_channel=1 thì kênh xanh lá của ảnh RGB565 nguồn sẽ được trích xuất và vẽ theo thang xám lên ảnh đích.

alpha kiểm soát mức độ pha trộn ảnh nguồn vào ảnh đích. Giá trị 255 vẽ ảnh nguồn không trong suốt trong khi giá trị nhỏ hơn 255 tạo ra sự pha trộn giữa ảnh nguồn và đích. 0 không tạo ra bất kỳ thay đổi nào cho ảnh đích.

color_palette nếu không phải None có thể là một enum bảng màu sắc hoặc ảnh RGB565 tổng cộng 256 điểm ảnh để sử dụng làm bảng tra cứu màu sắc dựa trên giá trị thang xám của ảnh nguồn. Được áp dụng sau khi trích xuất rgb_channel nếu được sử dụng.

alpha_palette nếu không phải None có thể là ảnh GRAYSCALE tổng cộng 256 điểm ảnh để sử dụng làm bảng alpha điều chỉnh giá trị alpha của ảnh nguồn đang được vẽ ở cấp điểm ảnh, cho phép bạn kiểm soát chính xác giá trị alpha của các điểm ảnh dựa trên giá trị thang xám của chúng. Giá trị điểm ảnh 255 trong bảng tra cứu alpha là không trong suốt, bất kỳ giá trị nào nhỏ hơn 255 sẽ trở nên trong suốt hơn cho đến 0. Được áp dụng sau khi trích xuất rgb_channel nếu được sử dụng.

hint là phép OR logic của các cờ được liệt kê trong Hint flags (ngoại trừ image.BLACK_BACKGROUND không được hỗ trợ ở đây).

transformndarray 3x3 được sử dụng để thực hiện phép biến đổi phối cảnh trên ảnh. Hiện chỉ được hỗ trợ trên OpenMV Cam N6 vì nó có GPU có thể thực hiện điều này bằng phần cứng.

copy nếu True tạo một bản sao sâu (deep-copy) trên heap của ảnh đã được chuyển đổi thay vì chuyển đổi ảnh gốc tại chỗ.

copy_to_fb nếu True thì ảnh được tải trực tiếp vào bộ đệm khung hình. copy_to_fb có ưu tiên hơn copy. Điều này không có hiệu ứng đặc biệt nếu ảnh đã ở trong bộ đệm khung hình.

Trả về đối tượng ảnh để bạn có thể gọi phương thức khác sử dụng ký hiệu ..

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

Chuyển đổi ảnh thành ảnh độ sâu RGB565 (16 bit mỗi điểm ảnh).

x_scale kiểm soát mức độ co giãn ảnh hiển thị theo chiều x (float). Nếu giá trị này âm thì ảnh sẽ được lật theo chiều ngang. Lưu ý rằng nếu y_scale không được chỉ định thì nó sẽ khớp với x_scale để duy trì tỷ lệ khung hình.

y_scale kiểm soát mức độ co giãn ảnh hiển thị theo chiều y (float). Nếu giá trị này âm thì ảnh sẽ được lật theo chiều dọc. Lưu ý rằng nếu x_scale không được chỉ định thì nó sẽ khớp với x_scale để duy trì tỷ lệ khung hình.

roi là tuple hình chữ nhật vùng quan tâm (ROI) (x, y, w, h) của ảnh nguồn để vẽ. Điều này cho phép bạn trích xuất chỉ các điểm ảnh trong ROI để co giãn và vẽ lên ảnh đích.

rgb_channel là kênh RGB (0=R, G=1, B=2) để trích xuất từ ảnh RGB565 (nếu được truyền) và để hiển thị lên ảnh đích. Ví dụ: nếu bạn truyền rgb_channel=1 thì kênh xanh lá của ảnh RGB565 nguồn sẽ được trích xuất và vẽ theo thang xám lên ảnh đích.

alpha kiểm soát mức độ pha trộn ảnh nguồn vào ảnh đích. Giá trị 255 vẽ ảnh nguồn không trong suốt trong khi giá trị nhỏ hơn 255 tạo ra sự pha trộn giữa ảnh nguồn và đích. 0 không tạo ra bất kỳ thay đổi nào cho ảnh đích.

color_palette nếu không phải None có thể là image.PALETTE_DEPTH hoặc ảnh RGB565 tổng cộng 256 điểm ảnh để sử dụng làm bảng tra cứu màu sắc dựa trên giá trị thang xám của ảnh nguồn. Được áp dụng sau khi trích xuất rgb_channel nếu được sử dụng.

alpha_palette nếu không phải None có thể là ảnh GRAYSCALE tổng cộng 256 điểm ảnh để sử dụng làm bảng alpha điều chỉnh giá trị alpha của ảnh nguồn đang được vẽ ở cấp điểm ảnh, cho phép bạn kiểm soát chính xác giá trị alpha của các điểm ảnh dựa trên giá trị thang xám của chúng. Giá trị điểm ảnh 255 trong bảng tra cứu alpha là không trong suốt, bất kỳ giá trị nào nhỏ hơn 255 sẽ trở nên trong suốt hơn cho đến 0. Được áp dụng sau khi trích xuất rgb_channel nếu được sử dụng.

hint là phép OR logic của các cờ được liệt kê trong Hint flags (ngoại trừ image.BLACK_BACKGROUND không được hỗ trợ ở đây).

transformndarray 3x3 được sử dụng để thực hiện phép biến đổi phối cảnh trên ảnh. Hiện chỉ được hỗ trợ trên OpenMV Cam N6 vì nó có GPU có thể thực hiện điều này bằng phần cứng.

copy nếu True tạo một bản sao sâu (deep-copy) trên heap của ảnh đã được chuyển đổi thay vì chuyển đổi ảnh gốc tại chỗ.

copy_to_fb nếu True thì ảnh được tải trực tiếp vào bộ đệm khung hình. copy_to_fb có ưu tiên hơn copy. Điều này không có hiệu ứng đặc biệt nếu ảnh đã ở trong bộ đệm khung hình.

Trả về đối tượng ảnh để bạn có thể gọi phương thức khác sử dụng ký hiệu ..

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

Chuyển đổi ảnh thành ảnh sự kiện tối RGB565 (16 bit mỗi điểm ảnh).

x_scale kiểm soát mức độ co giãn ảnh hiển thị theo chiều x (float). Nếu giá trị này âm thì ảnh sẽ được lật theo chiều ngang. Lưu ý rằng nếu y_scale không được chỉ định thì nó sẽ khớp với x_scale để duy trì tỷ lệ khung hình.

y_scale kiểm soát mức độ co giãn ảnh hiển thị theo chiều y (float). Nếu giá trị này âm thì ảnh sẽ được lật theo chiều dọc. Lưu ý rằng nếu x_scale không được chỉ định thì nó sẽ khớp với x_scale để duy trì tỷ lệ khung hình.

roi là tuple hình chữ nhật vùng quan tâm (ROI) (x, y, w, h) của ảnh nguồn để vẽ. Điều này cho phép bạn trích xuất chỉ các điểm ảnh trong ROI để co giãn và vẽ lên ảnh đích.

rgb_channel là kênh RGB (0=R, G=1, B=2) để trích xuất từ ảnh RGB565 (nếu được truyền) và để hiển thị lên ảnh đích. Ví dụ: nếu bạn truyền rgb_channel=1 thì kênh xanh lá của ảnh RGB565 nguồn sẽ được trích xuất và vẽ theo thang xám lên ảnh đích.

alpha kiểm soát mức độ pha trộn ảnh nguồn vào ảnh đích. Giá trị 255 vẽ ảnh nguồn không trong suốt trong khi giá trị nhỏ hơn 255 tạo ra sự pha trộn giữa ảnh nguồn và đích. 0 không tạo ra bất kỳ thay đổi nào cho ảnh đích.

color_palette nếu không phải None có thể là một enum bảng màu sắc hoặc ảnh RGB565 tổng cộng 256 điểm ảnh để sử dụng làm bảng tra cứu màu sắc dựa trên giá trị thang xám của ảnh nguồn. Được áp dụng sau khi trích xuất rgb_channel nếu được sử dụng.

alpha_palette nếu không phải None có thể là ảnh GRAYSCALE tổng cộng 256 điểm ảnh để sử dụng làm bảng alpha điều chỉnh giá trị alpha của ảnh nguồn đang được vẽ ở cấp điểm ảnh, cho phép bạn kiểm soát chính xác giá trị alpha của các điểm ảnh dựa trên giá trị thang xám của chúng. Giá trị điểm ảnh 255 trong bảng tra cứu alpha là không trong suốt, bất kỳ giá trị nào nhỏ hơn 255 sẽ trở nên trong suốt hơn cho đến 0. Được áp dụng sau khi trích xuất rgb_channel nếu được sử dụng.

hint là phép OR logic của các cờ được liệt kê trong Hint flags (ngoại trừ image.BLACK_BACKGROUND không được hỗ trợ ở đây).

transformndarray 3x3 được sử dụng để thực hiện phép biến đổi phối cảnh trên ảnh. Hiện chỉ được hỗ trợ trên OpenMV Cam N6 vì nó có GPU có thể thực hiện điều này bằng phần cứng.

copy nếu True tạo một bản sao sâu (deep-copy) trên heap của ảnh đã được chuyển đổi thay vì chuyển đổi ảnh gốc tại chỗ.

copy_to_fb nếu True thì ảnh được tải trực tiếp vào bộ đệm khung hình. copy_to_fb có ưu tiên hơn copy. Điều này không có hiệu ứng đặc biệt nếu ảnh đã ở trong bộ đệm khung hình.

Trả về đối tượng ảnh để bạn có thể gọi phương thức khác sử dụng ký hiệu ..

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

Chuyển đổi ảnh thành ảnh sự kiện sáng RGB565 (16 bit mỗi điểm ảnh).

x_scale kiểm soát mức độ co giãn ảnh hiển thị theo chiều x (float). Nếu giá trị này âm thì ảnh sẽ được lật theo chiều ngang. Lưu ý rằng nếu y_scale không được chỉ định thì nó sẽ khớp với x_scale để duy trì tỷ lệ khung hình.

y_scale kiểm soát mức độ co giãn ảnh hiển thị theo chiều y (float). Nếu giá trị này âm thì ảnh sẽ được lật theo chiều dọc. Lưu ý rằng nếu x_scale không được chỉ định thì nó sẽ khớp với x_scale để duy trì tỷ lệ khung hình.

roi là tuple hình chữ nhật vùng quan tâm (ROI) (x, y, w, h) của ảnh nguồn để vẽ. Điều này cho phép bạn trích xuất chỉ các điểm ảnh trong ROI để co giãn và vẽ lên ảnh đích.

rgb_channel là kênh RGB (0=R, G=1, B=2) để trích xuất từ ảnh RGB565 (nếu được truyền) và để hiển thị lên ảnh đích. Ví dụ: nếu bạn truyền rgb_channel=1 thì kênh xanh lá của ảnh RGB565 nguồn sẽ được trích xuất và vẽ theo thang xám lên ảnh đích.

alpha kiểm soát mức độ pha trộn ảnh nguồn vào ảnh đích. Giá trị 255 vẽ ảnh nguồn không trong suốt trong khi giá trị nhỏ hơn 255 tạo ra sự pha trộn giữa ảnh nguồn và đích. 0 không tạo ra bất kỳ thay đổi nào cho ảnh đích.

color_palette nếu không phải None có thể là một enum bảng màu sắc hoặc ảnh RGB565 tổng cộng 256 điểm ảnh để sử dụng làm bảng tra cứu màu sắc dựa trên giá trị thang xám của ảnh nguồn. Được áp dụng sau khi trích xuất rgb_channel nếu được sử dụng.

alpha_palette nếu không phải None có thể là ảnh GRAYSCALE tổng cộng 256 điểm ảnh để sử dụng làm bảng alpha điều chỉnh giá trị alpha của ảnh nguồn đang được vẽ ở cấp điểm ảnh, cho phép bạn kiểm soát chính xác giá trị alpha của các điểm ảnh dựa trên giá trị thang xám của chúng. Giá trị điểm ảnh 255 trong bảng tra cứu alpha là không trong suốt, bất kỳ giá trị nào nhỏ hơn 255 sẽ trở nên trong suốt hơn cho đến 0. Được áp dụng sau khi trích xuất rgb_channel nếu được sử dụng.

hint là phép OR logic của các cờ được liệt kê trong Hint flags (ngoại trừ image.BLACK_BACKGROUND không được hỗ trợ ở đây).

transformndarray 3x3 được sử dụng để thực hiện phép biến đổi phối cảnh trên ảnh. Hiện chỉ được hỗ trợ trên OpenMV Cam N6 vì nó có GPU có thể thực hiện điều này bằng phần cứng.

copy nếu True tạo một bản sao sâu (deep-copy) trên heap của ảnh đã được chuyển đổi thay vì chuyển đổi ảnh gốc tại chỗ.

copy_to_fb nếu True thì ảnh được tải trực tiếp vào bộ đệm khung hình. copy_to_fb có ưu tiên hơn copy. Điều này không có hiệu ứng đặc biệt nếu ảnh đã ở trong bộ đệm khung hình.

Trả về đối tượng ảnh để bạn có thể gọi phương thức khác sử dụng ký hiệu ..

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

Chuyển đổi ảnh thành ảnh JPEG.

x_scale kiểm soát mức độ co giãn ảnh hiển thị theo chiều x (float). Nếu giá trị này âm thì ảnh sẽ được lật theo chiều ngang. Lưu ý rằng nếu y_scale không được chỉ định thì nó sẽ khớp với x_scale để duy trì tỷ lệ khung hình.

y_scale kiểm soát mức độ co giãn ảnh hiển thị theo chiều y (float). Nếu giá trị này âm thì ảnh sẽ được lật theo chiều dọc. Lưu ý rằng nếu x_scale không được chỉ định thì nó sẽ khớp với x_scale để duy trì tỷ lệ khung hình.

roi là tuple hình chữ nhật vùng quan tâm (ROI) (x, y, w, h) của ảnh nguồn để vẽ. Điều này cho phép bạn trích xuất chỉ các điểm ảnh trong ROI để co giãn và vẽ lên ảnh đích.

rgb_channel là kênh RGB (0=R, G=1, B=2) để trích xuất từ ảnh RGB565 (nếu được truyền) và để hiển thị lên ảnh đích. Ví dụ: nếu bạn truyền rgb_channel=1 thì kênh xanh lá của ảnh RGB565 nguồn sẽ được trích xuất và vẽ theo thang xám lên ảnh đích.

alpha kiểm soát mức độ pha trộn ảnh nguồn vào ảnh đích. Giá trị 255 vẽ ảnh nguồn không trong suốt trong khi giá trị nhỏ hơn 255 tạo ra sự pha trộn giữa ảnh nguồn và đích. 0 không tạo ra bất kỳ thay đổi nào cho ảnh đích.

color_palette nếu không phải None có thể là một enum bảng màu sắc hoặc ảnh RGB565 tổng cộng 256 điểm ảnh để sử dụng làm bảng tra cứu màu sắc dựa trên giá trị thang xám của ảnh nguồn. Được áp dụng sau khi trích xuất rgb_channel nếu được sử dụng.

alpha_palette nếu không phải None có thể là ảnh GRAYSCALE tổng cộng 256 điểm ảnh để sử dụng làm bảng alpha điều chỉnh giá trị alpha của ảnh nguồn đang được vẽ ở cấp điểm ảnh, cho phép bạn kiểm soát chính xác giá trị alpha của các điểm ảnh dựa trên giá trị thang xám của chúng. Giá trị điểm ảnh 255 trong bảng tra cứu alpha là không trong suốt, bất kỳ giá trị nào nhỏ hơn 255 sẽ trở nên trong suốt hơn cho đến 0. Được áp dụng sau khi trích xuất rgb_channel nếu được sử dụng.

hint là phép OR logic của các cờ được liệt kê trong Hint flags (ngoại trừ image.BLACK_BACKGROUND không được hỗ trợ ở đây).

transformndarray 3x3 được sử dụng để thực hiện phép biến đổi phối cảnh trên ảnh. Hiện chỉ được hỗ trợ trên OpenMV Cam N6 vì nó có GPU có thể thực hiện điều này bằng phần cứng.

copy nếu True tạo một bản sao sâu (deep-copy) trên heap của ảnh đã được chuyển đổi thay vì chuyển đổi ảnh gốc tại chỗ.

copy_to_fb nếu True thì ảnh được tải trực tiếp vào bộ đệm khung hình. copy_to_fb có ưu tiên hơn copy. Điều này không có hiệu ứng đặc biệt nếu ảnh đã ở trong bộ đệm khung hình.

quality kiểm soát chất lượng nén ảnh jpeg. Giá trị có thể từ 0 đến 100.

subsampling có thể là:

Trả về đối tượng ảnh để bạn có thể gọi phương thức khác sử dụng ký hiệu ..

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

Chuyển đổi ảnh thành ảnh PNG.

x_scale kiểm soát mức độ co giãn ảnh hiển thị theo chiều x (float). Nếu giá trị này âm thì ảnh sẽ được lật theo chiều ngang. Lưu ý rằng nếu y_scale không được chỉ định thì nó sẽ khớp với x_scale để duy trì tỷ lệ khung hình.

y_scale kiểm soát mức độ co giãn ảnh hiển thị theo chiều y (float). Nếu giá trị này âm thì ảnh sẽ được lật theo chiều dọc. Lưu ý rằng nếu x_scale không được chỉ định thì nó sẽ khớp với x_scale để duy trì tỷ lệ khung hình.

roi là tuple hình chữ nhật vùng quan tâm (ROI) (x, y, w, h) của ảnh nguồn để vẽ. Điều này cho phép bạn trích xuất chỉ các điểm ảnh trong ROI để co giãn và vẽ lên ảnh đích.

rgb_channel là kênh RGB (0=R, G=1, B=2) để trích xuất từ ảnh RGB565 (nếu được truyền) và để hiển thị lên ảnh đích. Ví dụ: nếu bạn truyền rgb_channel=1 thì kênh xanh lá của ảnh RGB565 nguồn sẽ được trích xuất và vẽ theo thang xám lên ảnh đích.

alpha kiểm soát mức độ pha trộn ảnh nguồn vào ảnh đích. Giá trị 255 vẽ ảnh nguồn không trong suốt trong khi giá trị nhỏ hơn 255 tạo ra sự pha trộn giữa ảnh nguồn và đích. 0 không tạo ra bất kỳ thay đổi nào cho ảnh đích.

color_palette nếu không phải None có thể là một enum bảng màu sắc hoặc ảnh RGB565 tổng cộng 256 điểm ảnh để sử dụng làm bảng tra cứu màu sắc dựa trên giá trị thang xám của ảnh nguồn. Được áp dụng sau khi trích xuất rgb_channel nếu được sử dụng.

alpha_palette nếu không phải None có thể là ảnh GRAYSCALE tổng cộng 256 điểm ảnh để sử dụng làm bảng alpha điều chỉnh giá trị alpha của ảnh nguồn đang được vẽ ở cấp điểm ảnh, cho phép bạn kiểm soát chính xác giá trị alpha của các điểm ảnh dựa trên giá trị thang xám của chúng. Giá trị điểm ảnh 255 trong bảng tra cứu alpha là không trong suốt, bất kỳ giá trị nào nhỏ hơn 255 sẽ trở nên trong suốt hơn cho đến 0. Được áp dụng sau khi trích xuất rgb_channel nếu được sử dụng.

hint là phép OR logic của các cờ được liệt kê trong Hint flags (ngoại trừ image.BLACK_BACKGROUND không được hỗ trợ ở đây).

transformndarray 3x3 được sử dụng để thực hiện phép biến đổi phối cảnh trên ảnh. Hiện chỉ được hỗ trợ trên OpenMV Cam N6 vì nó có GPU có thể thực hiện điều này bằng phần cứng.

copy nếu True tạo một bản sao sâu (deep-copy) trên heap của ảnh đã được chuyển đổi thay vì chuyển đổi ảnh gốc tại chỗ.

copy_to_fb nếu True thì ảnh được tải trực tiếp vào bộ đệm khung hình. copy_to_fb có ưu tiên hơn copy. Điều này không có hiệu ứng đặc biệt nếu ảnh đã ở trong bộ đệm khung hình.

Trả về đối tượng ảnh để bạn có thể gọi phương thức khác sử dụng ký hiệu ..

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

Chuyển đổi ảnh thành ảnh JPEG.

x_scale kiểm soát mức độ co giãn ảnh hiển thị theo chiều x (float). Nếu giá trị này âm thì ảnh sẽ được lật theo chiều ngang. Lưu ý rằng nếu y_scale không được chỉ định thì nó sẽ khớp với x_scale để duy trì tỷ lệ khung hình.

y_scale kiểm soát mức độ co giãn ảnh hiển thị theo chiều y (float). Nếu giá trị này âm thì ảnh sẽ được lật theo chiều dọc. Lưu ý rằng nếu x_scale không được chỉ định thì nó sẽ khớp với x_scale để duy trì tỷ lệ khung hình.

roi là tuple hình chữ nhật vùng quan tâm (ROI) (x, y, w, h) của ảnh nguồn để vẽ. Điều này cho phép bạn trích xuất chỉ các điểm ảnh trong ROI để co giãn và vẽ lên ảnh đích.

rgb_channel là kênh RGB (0=R, G=1, B=2) để trích xuất từ ảnh RGB565 (nếu được truyền) và để hiển thị lên ảnh đích. Ví dụ: nếu bạn truyền rgb_channel=1 thì kênh xanh lá của ảnh RGB565 nguồn sẽ được trích xuất và vẽ theo thang xám lên ảnh đích.

alpha kiểm soát mức độ pha trộn ảnh nguồn vào ảnh đích. Giá trị 255 vẽ ảnh nguồn không trong suốt trong khi giá trị nhỏ hơn 255 tạo ra sự pha trộn giữa ảnh nguồn và đích. 0 không tạo ra bất kỳ thay đổi nào cho ảnh đích.

color_palette nếu không phải None có thể là một enum bảng màu sắc hoặc ảnh RGB565 tổng cộng 256 điểm ảnh để sử dụng làm bảng tra cứu màu sắc dựa trên giá trị thang xám của ảnh nguồn. Được áp dụng sau khi trích xuất rgb_channel nếu được sử dụng.

alpha_palette nếu không phải None có thể là ảnh GRAYSCALE tổng cộng 256 điểm ảnh để sử dụng làm bảng alpha điều chỉnh giá trị alpha của ảnh nguồn đang được vẽ ở cấp điểm ảnh, cho phép bạn kiểm soát chính xác giá trị alpha của các điểm ảnh dựa trên giá trị thang xám của chúng. Giá trị điểm ảnh 255 trong bảng tra cứu alpha là không trong suốt, bất kỳ giá trị nào nhỏ hơn 255 sẽ trở nên trong suốt hơn cho đến 0. Được áp dụng sau khi trích xuất rgb_channel nếu được sử dụng.

hint là phép OR logic của các cờ được liệt kê trong Hint flags (ngoại trừ image.BLACK_BACKGROUND không được hỗ trợ ở đây).

transformndarray 3x3 được sử dụng để thực hiện phép biến đổi phối cảnh trên ảnh. Hiện chỉ được hỗ trợ trên OpenMV Cam N6 vì nó có GPU có thể thực hiện điều này bằng phần cứng.

copy nếu True tạo một bản sao sâu (deep-copy) trên heap của ảnh đã được chuyển đổi thay vì chuyển đổi ảnh gốc tại chỗ.

copy_to_fb nếu True thì ảnh được tải trực tiếp vào bộ đệm khung hình. copy_to_fb có ưu tiên hơn copy. Điều này không có hiệu ứng đặc biệt nếu ảnh đã ở trong bộ đệm khung hình.

quality kiểm soát chất lượng nén ảnh jpeg. Giá trị có thể từ 0 đến 100.

subsampling có thể là:

Trả về đối tượng ảnh để bạn có thể gọi phương thức khác sử dụng ký hiệu ..

Ghi chú

Image.compress là bí danh cho Image.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

Tạo một bản sao sâu của đối tượng ảnh.

x_scale kiểm soát mức độ co giãn ảnh hiển thị theo chiều x (float). Nếu giá trị này âm thì ảnh sẽ được lật theo chiều ngang. Lưu ý rằng nếu y_scale không được chỉ định thì nó sẽ khớp với x_scale để duy trì tỷ lệ khung hình.

y_scale kiểm soát mức độ co giãn ảnh hiển thị theo chiều y (float). Nếu giá trị này âm thì ảnh sẽ được lật theo chiều dọc. Lưu ý rằng nếu x_scale không được chỉ định thì nó sẽ khớp với x_scale để duy trì tỷ lệ khung hình.

roi là tuple hình chữ nhật vùng quan tâm (ROI) (x, y, w, h) của ảnh nguồn để vẽ. Điều này cho phép bạn trích xuất chỉ các điểm ảnh trong ROI để co giãn và vẽ lên ảnh đích.

rgb_channel là kênh RGB (0=R, G=1, B=2) để trích xuất từ ảnh RGB565 (nếu được truyền) và để hiển thị lên ảnh đích. Ví dụ: nếu bạn truyền rgb_channel=1 thì kênh xanh lá của ảnh RGB565 nguồn sẽ được trích xuất và vẽ theo thang xám lên ảnh đích.

alpha kiểm soát mức độ pha trộn ảnh nguồn vào ảnh đích. Giá trị 255 vẽ ảnh nguồn không trong suốt trong khi giá trị nhỏ hơn 255 tạo ra sự pha trộn giữa ảnh nguồn và đích. 0 không tạo ra bất kỳ thay đổi nào cho ảnh đích.

color_palette nếu không phải None có thể là một enum bảng màu sắc hoặc ảnh RGB565 tổng cộng 256 điểm ảnh để sử dụng làm bảng tra cứu màu sắc dựa trên giá trị thang xám của ảnh nguồn. Được áp dụng sau khi trích xuất rgb_channel nếu được sử dụng.

alpha_palette nếu không phải None có thể là ảnh GRAYSCALE tổng cộng 256 điểm ảnh để sử dụng làm bảng alpha điều chỉnh giá trị alpha của ảnh nguồn đang được vẽ ở cấp điểm ảnh, cho phép bạn kiểm soát chính xác giá trị alpha của các điểm ảnh dựa trên giá trị thang xám của chúng. Giá trị điểm ảnh 255 trong bảng tra cứu alpha là không trong suốt, bất kỳ giá trị nào nhỏ hơn 255 sẽ trở nên trong suốt hơn cho đến 0. Được áp dụng sau khi trích xuất rgb_channel nếu được sử dụng.

hint là phép OR logic của các cờ được liệt kê trong Hint flags (ngoại trừ image.BLACK_BACKGROUND không được hỗ trợ ở đây).

transformndarray 3x3 được sử dụng để thực hiện phép biến đổi phối cảnh trên ảnh. Hiện chỉ được hỗ trợ trên OpenMV Cam N6 vì nó có GPU có thể thực hiện điều này bằng phần cứng.

copy_to_fb nếu True thì ảnh được tải trực tiếp vào bộ đệm khung hình. Điều này không có hiệu ứng đặc biệt nếu ảnh đã ở trong bộ đệm khung hình.

Trả về đối tượng ảnh để bạn có thể gọi phương thức khác sử dụng ký hiệu ..

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

Sửa đổi ảnh tại chỗ mà không thay đổi loại ảnh cơ bản.

x_scale kiểm soát mức độ co giãn ảnh hiển thị theo chiều x (float). Nếu giá trị này âm thì ảnh sẽ được lật theo chiều ngang. Lưu ý rằng nếu y_scale không được chỉ định thì nó sẽ khớp với x_scale để duy trì tỷ lệ khung hình.

y_scale kiểm soát mức độ co giãn ảnh hiển thị theo chiều y (float). Nếu giá trị này âm thì ảnh sẽ được lật theo chiều dọc. Lưu ý rằng nếu x_scale không được chỉ định thì nó sẽ khớp với x_scale để duy trì tỷ lệ khung hình.

roi là tuple hình chữ nhật vùng quan tâm (ROI) (x, y, w, h) của ảnh nguồn để vẽ. Điều này cho phép bạn trích xuất chỉ các điểm ảnh trong ROI để co giãn và vẽ lên ảnh đích.

rgb_channel là kênh RGB (0=R, G=1, B=2) để trích xuất từ ảnh RGB565 (nếu được truyền) và để hiển thị lên ảnh đích. Ví dụ: nếu bạn truyền rgb_channel=1 thì kênh xanh lá của ảnh RGB565 nguồn sẽ được trích xuất và vẽ theo thang xám lên ảnh đích.

alpha kiểm soát mức độ pha trộn ảnh nguồn vào ảnh đích. Giá trị 255 vẽ ảnh nguồn không trong suốt trong khi giá trị nhỏ hơn 255 tạo ra sự pha trộn giữa ảnh nguồn và đích. 0 không tạo ra bất kỳ thay đổi nào cho ảnh đích.

color_palette nếu không phải None có thể là một enum bảng màu sắc hoặc ảnh RGB565 tổng cộng 256 điểm ảnh để sử dụng làm bảng tra cứu màu sắc dựa trên giá trị thang xám của ảnh nguồn. Được áp dụng sau khi trích xuất rgb_channel nếu được sử dụng.

alpha_palette nếu không phải None có thể là ảnh GRAYSCALE tổng cộng 256 điểm ảnh để sử dụng làm bảng alpha điều chỉnh giá trị alpha của ảnh nguồn đang được vẽ ở cấp điểm ảnh, cho phép bạn kiểm soát chính xác giá trị alpha của các điểm ảnh dựa trên giá trị thang xám của chúng. Giá trị điểm ảnh 255 trong bảng tra cứu alpha là không trong suốt, bất kỳ giá trị nào nhỏ hơn 255 sẽ trở nên trong suốt hơn cho đến 0. Được áp dụng sau khi trích xuất rgb_channel nếu được sử dụng.

hint là phép OR logic của các cờ được liệt kê trong Hint flags (ngoại trừ image.BLACK_BACKGROUND không được hỗ trợ ở đây).

transformndarray 3x3 được sử dụng để thực hiện phép biến đổi phối cảnh trên ảnh. Hiện chỉ được hỗ trợ trên OpenMV Cam N6 vì nó có GPU có thể thực hiện điều này bằng phần cứng.

copy nếu True tạo một bản sao sâu (deep-copy) trên heap của ảnh đã được chuyển đổi thay vì chuyển đổi ảnh gốc tại chỗ.

copy_to_fb nếu True thì ảnh được tải trực tiếp vào bộ đệm khung hình. copy_to_fb có ưu tiên hơn copy. Điều này không có hiệu ứng đặc biệt nếu ảnh đã ở trong bộ đệm khung hình.

Trả về đối tượng ảnh để bạn có thể gọi phương thức khác sử dụng ký hiệu ..

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

Sửa đổi ảnh tại chỗ mà không thay đổi loại ảnh cơ bản.

x_scale kiểm soát mức độ co giãn ảnh hiển thị theo chiều x (float). Nếu giá trị này âm thì ảnh sẽ được lật theo chiều ngang. Lưu ý rằng nếu y_scale không được chỉ định thì nó sẽ khớp với x_scale để duy trì tỷ lệ khung hình.

y_scale kiểm soát mức độ co giãn ảnh hiển thị theo chiều y (float). Nếu giá trị này âm thì ảnh sẽ được lật theo chiều dọc. Lưu ý rằng nếu x_scale không được chỉ định thì nó sẽ khớp với x_scale để duy trì tỷ lệ khung hình.

roi là tuple hình chữ nhật vùng quan tâm (ROI) (x, y, w, h) của ảnh nguồn để vẽ. Điều này cho phép bạn trích xuất chỉ các điểm ảnh trong ROI để co giãn và vẽ lên ảnh đích.

rgb_channel là kênh RGB (0=R, G=1, B=2) để trích xuất từ ảnh RGB565 (nếu được truyền) và để hiển thị lên ảnh đích. Ví dụ: nếu bạn truyền rgb_channel=1 thì kênh xanh lá của ảnh RGB565 nguồn sẽ được trích xuất và vẽ theo thang xám lên ảnh đích.

alpha kiểm soát mức độ pha trộn ảnh nguồn vào ảnh đích. Giá trị 255 vẽ ảnh nguồn không trong suốt trong khi giá trị nhỏ hơn 255 tạo ra sự pha trộn giữa ảnh nguồn và đích. 0 không tạo ra bất kỳ thay đổi nào cho ảnh đích.

color_palette nếu không phải None có thể là một enum bảng màu sắc hoặc ảnh RGB565 tổng cộng 256 điểm ảnh để sử dụng làm bảng tra cứu màu sắc dựa trên giá trị thang xám của ảnh nguồn. Được áp dụng sau khi trích xuất rgb_channel nếu được sử dụng.

alpha_palette nếu không phải None có thể là ảnh GRAYSCALE tổng cộng 256 điểm ảnh để sử dụng làm bảng alpha điều chỉnh giá trị alpha của ảnh nguồn đang được vẽ ở cấp điểm ảnh, cho phép bạn kiểm soát chính xác giá trị alpha của các điểm ảnh dựa trên giá trị thang xám của chúng. Giá trị điểm ảnh 255 trong bảng tra cứu alpha là không trong suốt, bất kỳ giá trị nào nhỏ hơn 255 sẽ trở nên trong suốt hơn cho đến 0. Được áp dụng sau khi trích xuất rgb_channel nếu được sử dụng.

hint là phép OR logic của các cờ được liệt kê trong Hint flags (ngoại trừ image.BLACK_BACKGROUND không được hỗ trợ ở đây).

transformndarray 3x3 được sử dụng để thực hiện phép biến đổi phối cảnh trên ảnh. Hiện chỉ được hỗ trợ trên OpenMV Cam N6 vì nó có GPU có thể thực hiện điều này bằng phần cứng.

copy nếu True tạo một bản sao sâu (deep-copy) trên heap của ảnh đã được chuyển đổi thay vì chuyển đổi ảnh gốc tại chỗ.

copy_to_fb nếu True thì ảnh được tải trực tiếp vào bộ đệm khung hình. copy_to_fb có ưu tiên hơn copy. Điều này không có hiệu ứng đặc biệt nếu ảnh đã ở trong bộ đệm khung hình.

Trả về đối tượng ảnh để bạn có thể gọi phương thức khác sử dụng ký hiệu ..

Ghi chú

Image.scale là bí danh cho Image.crop.

save(path: str, roi: Tuple[int, int, int, int] | None = None, quality: int = 50) Image

Lưu bản sao của ảnh vào hệ thống tệp tại path.

Hỗ trợ các tệp ảnh bmp/pgm/ppm/jpg/jpeg. Lưu ý rằng bạn không thể lưu ảnh nén jpeg sang định dạng không nén.

roi là hình chữ nhật vùng quan tâm (ROI) (x, y, w, h) để lưu. Nếu không được chỉ định, nó bằng hình chữ nhật ảnh sao chép toàn bộ ảnh. Đối số này không áp dụng cho ảnh JPEG.

quality là chất lượng nén jpeg để lưu ảnh sang định dạng jpeg nếu ảnh chưa được nén (0-100) (int).

Trả về đối tượng ảnh để bạn có thể gọi phương thức khác sử dụng ký hiệu ..

flush() None

Cập nhật bộ đệm khung hình trong IDE với ảnh trong bộ đệm khung hình trên camera.

Các phương thức vẽ

clear(mask: Image | None = None) Image

Đặt tất cả các điểm ảnh trong ảnh về zero (rất nhanh).

mask là ảnh khác được dùng làm mặt nạ ở cấp điểm ảnh cho thao tác. Mặt nạ nên là ảnh chỉ có điểm ảnh đen hoặc trắng và nên có cùng kích thước với ảnh đang được thao tác. Chỉ các điểm ảnh được đặt trong mặt nạ mới được sửa đổi.

Trả về đối tượng ảnh để bạn có thể gọi phương thức khác sử dụng ký hiệu ..

Không hỗ trợ trên ảnh nén.

draw_line(x0: int, y0: int, x1: int, y1: int, color: int | Tuple[int, int, int] | None = None, thickness: int = 1) Image

Vẽ một đường thẳng từ (x0, y0) đến (x1, y1) trên ảnh. Bạn có thể truyền x0, y0, x1, y1 riêng lẻ hoặc dưới dạng tuple (x0, y0, x1, y1).

color là tuple RGB888 cho ảnh Grayscale hoặc RGB565. Mặc định là màu trắng. Tuy nhiên, bạn cũng có thể truyền giá trị điểm ảnh cơ bản (0-255) cho ảnh thang xám hoặc giá trị RGB565 cho ảnh RGB565.

thickness kiểm soát độ dày của đường thẳng tính bằng điểm ảnh.

Trả về đối tượng ảnh để bạn có thể gọi phương thức khác sử dụng ký hiệu ..

Không hỗ trợ trên ảnh nén hoặc ảnh 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

Vẽ hình chữ nhật trên ảnh. Bạn có thể truyền x, y, w, h riêng lẻ hoặc dưới dạng tuple (x, y, w, h).

color là tuple RGB888 cho ảnh Grayscale hoặc RGB565. Mặc định là màu trắng. Tuy nhiên, bạn cũng có thể truyền giá trị điểm ảnh cơ bản (0-255) cho ảnh thang xám hoặc giá trị RGB565 cho ảnh RGB565.

thickness kiểm soát độ dày của các cạnh tính bằng điểm ảnh.

Truyền fill là True để tô đầy hình chữ nhật.

Trả về đối tượng ảnh để bạn có thể gọi phương thức khác sử dụng ký hiệu ..

Không hỗ trợ trên ảnh nén hoặc ảnh bayer.

draw_circle(x: int, y: int, radius: int, color: int | Tuple[int, int, int] | None = None, thickness: int = 1, fill: bool = False) Image

Vẽ hình tròn trên ảnh. Bạn có thể truyền x, y, radius riêng lẻ hoặc dưới dạng tuple (x, y, radius).

color là tuple RGB888 cho ảnh Grayscale hoặc RGB565. Mặc định là màu trắng. Tuy nhiên, bạn cũng có thể truyền giá trị điểm ảnh cơ bản (0-255) cho ảnh thang xám hoặc giá trị RGB565 cho ảnh RGB565.

thickness kiểm soát độ dày của các cạnh tính bằng điểm ảnh.

Truyền fill là True để tô đầy hình tròn.

Trả về đối tượng ảnh để bạn có thể gọi phương thức khác sử dụng ký hiệu ..

Không hỗ trợ trên ảnh nén hoặc ảnh 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

Vẽ hình ellipse trên ảnh. Bạn có thể truyền cx, cy, rx, ry và góc xoay (tính bằng độ) riêng lẻ hoặc dưới dạng tuple (cx, yc, rx, ry, rotation).

color là tuple RGB888 cho ảnh Grayscale hoặc RGB565. Mặc định là màu trắng. Tuy nhiên, bạn cũng có thể truyền giá trị điểm ảnh cơ bản (0-255) cho ảnh thang xám hoặc giá trị RGB565 cho ảnh RGB565.

thickness kiểm soát độ dày của các cạnh tính bằng điểm ảnh.

Truyền fill là True để tô đầy hình ellipse.

Trả về đối tượng ảnh để bạn có thể gọi phương thức khác sử dụng ký hiệu ..

Không hỗ trợ trên ảnh nén hoặc ảnh 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

Vẽ văn bản 8x10 bắt đầu tại vị trí (x, y) trong ảnh. Bạn có thể truyền x, y riêng lẻ hoặc dưới dạng tuple (x, y).

text là chuỗi để ghi vào ảnh. Các ký tự xuống dòng \n, \r, và \r\n di chuyển con trỏ đến dòng tiếp theo.

color là tuple RGB888 cho ảnh Grayscale hoặc RGB565. Mặc định là màu trắng. Tuy nhiên, bạn cũng có thể truyền giá trị điểm ảnh cơ bản (0-255) cho ảnh thang xám hoặc giá trị RGB565 cho ảnh RGB565.

scale có thể được tăng để tăng/giảm kích thước văn bản trên ảnh. Bạn có thể truyền giá trị số nguyên hoặc dấu phẩy động lớn hơn 0.

x_spacing cho phép bạn thêm (nếu dương) hoặc trừ (nếu âm) x điểm ảnh giữa các ký tự.

y_spacing cho phép bạn thêm (nếu dương) hoặc trừ (nếu âm) y điểm ảnh giữa các ký tự (cho văn bản nhiều dòng).

mono_space mặc định là True buộc văn bản có khoảng cách cố định. Với các cỡ văn bản lớn điều này trông rất xấu. Đặt False để có khoảng cách ký tự không cố định trông ĐẸP HƠN NHIỀU.

char_rotation có thể là 0, 90, 180, 270 để xoay từng ký tự trong chuỗi theo lượng này.

char_hmirror nếu True thì lật theo chiều ngang tất cả các ký tự trong chuỗi.

char_vflip nếu True thì lật theo chiều dọc tất cả các ký tự trong chuỗi.

string_rotation có thể là 0, 90, 180, 270 để xoay chuỗi theo lượng này.

string_hmirror nếu True thì lật theo chiều ngang chuỗi.

string_vflip nếu True thì lật theo chiều dọc chuỗi.

Trả về đối tượng ảnh để bạn có thể gọi phương thức khác sử dụng ký hiệu ..

Không hỗ trợ trên ảnh nén hoặc ảnh bayer.

draw_cross(x: int, y: int, color: int | Tuple[int, int, int] | None = None, size: int = 5, thickness: int = 1) Image

Vẽ dấu thập tại vị trí x, y. Bạn có thể truyền x, y riêng lẻ hoặc dưới dạng tuple (x, y).

color là tuple RGB888 cho ảnh Grayscale hoặc RGB565. Mặc định là màu trắng. Tuy nhiên, bạn cũng có thể truyền giá trị điểm ảnh cơ bản (0-255) cho ảnh thang xám hoặc giá trị RGB565 cho ảnh RGB565.

size kiểm soát độ dài của các đường của dấu thập.

thickness kiểm soát độ dày của các cạnh tính bằng điểm ảnh.

Trả về đối tượng ảnh để bạn có thể gọi phương thức khác sử dụng ký hiệu ..

Không hỗ trợ trên ảnh nén hoặc ảnh bayer.

draw_arrow(x0: int, y0: int, x1: int, y1: int, color: int | Tuple[int, int, int] | None = None, thickness: int = 1) Image

Vẽ mũi tên từ (x0, y0) đến (x1, y1) trên ảnh. Bạn có thể truyền x0, y0, x1, y1 riêng lẻ hoặc dưới dạng tuple (x0, y0, x1, y1).

color là tuple RGB888 cho ảnh Grayscale hoặc RGB565. Mặc định là màu trắng. Tuy nhiên, bạn cũng có thể truyền giá trị điểm ảnh cơ bản (0-255) cho ảnh thang xám hoặc giá trị RGB565 cho ảnh RGB565.

thickness kiểm soát độ dày của đường thẳng tính bằng điểm ảnh.

Trả về đối tượng ảnh để bạn có thể gọi phương thức khác sử dụng ký hiệu ..

Không hỗ trợ trên ảnh nén hoặc ảnh 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

Vẽ kết quả phát hiện lên ảnh. detection là tuple 6 phần tử (rx, ry, rw, rh, cx, cy) mô tả hình chữ nhật giới hạn và tâm điểm (thường được trả về bởi mã NN hoặc theo dõi màu sắc).

color1 là màu sắc hình chữ nhật và color2 là màu sắc dấu thập tâm điểm. size là kích thước dấu thập tâm điểm, thickness kiểm soát độ rộng đường viền, và fill tô đầy hình chữ nhật.

label nếu được cung cấp sẽ được vẽ gần hình chữ nhật, được dịch chuyển theo label_offset (x, y).

Trả về đối tượng ảnh để bạn có thể gọi phương thức khác sử dụng ký hiệu ..

Không hỗ trợ trên ảnh nén hoặc ảnh 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

Vẽ các cạnh đường thẳng giữa danh sách góc được trả về bởi các phương thức như blob.corners. Corners là tuple bốn phần tử gồm các tuple x/y hai phần tử. Ví dụ: [(x1,y1),(x2,y2),(x3,y3),(x4,y4)].

color là tuple RGB888 cho ảnh Grayscale hoặc RGB565. Mặc định là màu trắng. Tuy nhiên, bạn cũng có thể truyền giá trị điểm ảnh cơ bản (0-255) cho ảnh thang xám hoặc giá trị RGB565 cho ảnh RGB565.

size nếu lớn hơn 0 thì các góc được vẽ dưới dạng hình tròn có bán kính size.

thickness kiểm soát độ dày của đường thẳng tính bằng điểm ảnh.

Truyền fill là True để tô đầy các hình tròn góc nếu được vẽ.

Trả về đối tượng ảnh để bạn có thể gọi phương thức khác sử dụng ký hiệu ..

Không hỗ trợ trên ảnh nén hoặc ảnh 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

Vẽ một image có góc trên bên trái bắt đầu tại vị trí x, y. Bạn có thể truyền x, y riêng lẻ hoặc dưới dạng tuple (x, y). Phương thức này tự động xử lý việc hiển thị ảnh được truyền vào đúng định dạng điểm ảnh cho ảnh đích trong khi cũng xử lý việc cắt xén một cách liền mạch.

Bạn cũng có thể truyền đường dẫn thay vì đối tượng ảnh cho phương thức này để tự động tải ảnh từ đĩa và sử dụng trong một bước. Ví dụ: draw_image("test.jpg").

x_scale kiểm soát mức độ co giãn ảnh hiển thị theo chiều x (float). Nếu giá trị này âm thì ảnh sẽ được lật theo chiều ngang. Lưu ý rằng nếu y_scale không được chỉ định thì nó sẽ khớp với x_scale để duy trì tỷ lệ khung hình.

y_scale kiểm soát mức độ co giãn ảnh hiển thị theo chiều y (float). Nếu giá trị này âm thì ảnh sẽ được lật theo chiều dọc. Lưu ý rằng nếu x_scale không được chỉ định thì nó sẽ khớp với x_scale để duy trì tỷ lệ khung hình.

roi là tuple hình chữ nhật vùng quan tâm (ROI) (x, y, w, h) của ảnh nguồn để vẽ. Điều này cho phép bạn trích xuất chỉ các điểm ảnh trong ROI để co giãn và vẽ lên ảnh đích.

rgb_channel là kênh RGB (0=R, G=1, B=2) để trích xuất từ ảnh RGB565 (nếu được truyền) và để hiển thị lên ảnh đích. Ví dụ: nếu bạn truyền rgb_channel=1 thì kênh xanh lá của ảnh RGB565 nguồn sẽ được trích xuất và vẽ theo thang xám lên ảnh đích.

alpha kiểm soát mức độ pha trộn ảnh nguồn vào ảnh đích. Giá trị 255 vẽ ảnh nguồn không trong suốt trong khi giá trị nhỏ hơn 255 tạo ra sự pha trộn giữa ảnh nguồn và đích. 0 không tạo ra bất kỳ thay đổi nào cho ảnh đích.

color_palette nếu không phải None có thể là một enum bảng màu sắc hoặc ảnh RGB565 tổng cộng 256 điểm ảnh để sử dụng làm bảng tra cứu màu sắc dựa trên giá trị thang xám của ảnh nguồn. Được áp dụng sau khi trích xuất rgb_channel nếu được sử dụng.

alpha_palette nếu không phải None có thể là ảnh GRAYSCALE tổng cộng 256 điểm ảnh để sử dụng làm bảng alpha điều chỉnh giá trị alpha của ảnh nguồn đang được vẽ ở cấp điểm ảnh, cho phép bạn kiểm soát chính xác giá trị alpha của các điểm ảnh dựa trên giá trị thang xám của chúng. Giá trị điểm ảnh 255 trong bảng tra cứu alpha là không trong suốt, bất kỳ giá trị nào nhỏ hơn 255 sẽ trở nên trong suốt hơn cho đến 0. Được áp dụng sau khi trích xuất rgb_channel nếu được sử dụng.

hint là phép OR logic của các cờ được liệt kê trong Hint flags (bao gồm image.BLACK_BACKGROUND được hỗ trợ ở đây).

transformndarray 3x3 được sử dụng để thực hiện phép biến đổi phối cảnh trên ảnh. Hiện chỉ được hỗ trợ trên OpenMV Cam N6 vì nó có GPU có thể thực hiện điều này bằng phần cứng.

Trả về đối tượng ảnh để bạn có thể gọi phương thức khác sử dụng ký hiệu ..

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

Vẽ các điểm đặc trưng của đối tượng keypoints lên ảnh. Bạn cũng có thể truyền danh sách các tuple ba giá trị chứa (x, y, rotation_angle_in_degrees) để tái sử dụng phương thức này để vẽ các ký hiệu điểm đặc trưng là hình tròn với một đường thẳng chỉ theo một hướng cụ thể.

color là tuple RGB888 cho ảnh Grayscale hoặc RGB565. Mặc định là màu trắng. Tuy nhiên, bạn cũng có thể truyền giá trị điểm ảnh cơ bản (0-255) cho ảnh thang xám hoặc giá trị RGB565 cho ảnh RGB565.

size kiểm soát kích thước của các điểm đặc trưng.

thickness kiểm soát độ dày của đường thẳng tính bằng điểm ảnh.

Truyền fill là True để tô đầy các điểm đặc trưng.

Trả về đối tượng ảnh để bạn có thể gọi phương thức khác sử dụng ký hiệu ..

Không hỗ trợ trên ảnh nén hoặc ảnh 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

Tô màu ngập (flood fill) một vùng của ảnh bắt đầu từ vị trí x, y. Bạn có thể truyền x, y riêng lẻ hoặc dưới dạng tuple (x, y).

seed_threshold kiểm soát mức độ khác biệt của bất kỳ điểm ảnh nào trong vùng tô so với điểm ảnh bắt đầu gốc.

floating_threshold kiểm soát mức độ khác biệt của bất kỳ điểm ảnh nào trong vùng tô so với bất kỳ điểm ảnh lân cận nào.

color là tuple RGB888 cho ảnh Grayscale hoặc RGB565. Mặc định là màu trắng. Tuy nhiên, bạn cũng có thể truyền giá trị điểm ảnh cơ bản (0-255) cho ảnh thang xám hoặc giá trị RGB565 cho ảnh RGB565.

Truyền invert là True để tô màu lại mọi thứ bên ngoài vùng tô màu ngập đã kết nối.

Truyền clear_background là True để zero các điểm ảnh còn lại mà flood-fill không tô màu lại.

mask là ảnh khác được dùng làm mặt nạ ở cấp điểm ảnh cho thao tác. Mặt nạ nên là ảnh chỉ có điểm ảnh đen hoặc trắng và nên có cùng kích thước với ảnh đang được thao tác. Chỉ các điểm ảnh được đặt trong mặt nạ mới được đánh giá khi tô màu ngập.

Trả về đối tượng ảnh để bạn có thể gọi phương thức khác sử dụng ký hiệu ..

Không hỗ trợ trên ảnh nén hoặc ảnh bayer.

Phương thức này không khả dụng trên OpenMV Cam M4.

draw_event_histogram(array: ndarray, clear: bool = True, brightness: int = 128, contrast: int = 16) Image

Rasterize một mảng sự kiện ndarray (được điền bởi csi.IOCTL_GENX320_READ_EVENTS) lên một Image để hiển thị trực quan. Bộ đệm ảnh phải là ảnh GRAYSCALE 320x320.

Đối với mỗi hàng csi.PIX_ON_EVENT, điểm ảnh của sự kiện được cộng thêm +contrast; đối với mỗi hàng csi.PIX_OFF_EVENT, điểm ảnh được trừ đi -contrast. Các sự kiện kích hoạt bị bỏ qua. Giá trị điểm ảnh được kẹp từ 0-255.

clear nếu True thì đặt lại bộ đệm ảnh về brightness trước khi vẽ --- mỗi khung hình trở thành một lần hiển thị sự kiện mới. Đặt False để tích lũy các sự kiện qua nhiều lần gọi (hữu ích cho các vệt chuyển động phơi sáng dài).

brightness kiểm soát đường cơ sở xám trung bình mà bộ đệm được đặt lại khi clear là True. Giá trị mặc định 128 đặt các sự kiện ON ở đầu sáng và các sự kiện OFF ở đầu tối với khoảng headroom bằng nhau.

contrast kiểm soát mức độ mỗi sự kiện dịch chuyển điểm ảnh của nó --- giá trị cao hơn làm cho các sự kiện nổi bật hơn, với cái giá là bão hòa nhanh khi nhiều sự kiện rơi vào cùng một điểm ảnh.

Các phương thức che khuất (Masking)

mask_rectangle(x: int, y: int, w: int, h: int) Image

Xóa về zero một phần hình chữ nhật của ảnh. Nếu không có đối số nào được cung cấp thì phương thức này xóa về zero phần trung tâm của ảnh.

Trả về đối tượng ảnh để bạn có thể gọi phương thức khác sử dụng ký hiệu ..

Không hỗ trợ trên ảnh nén hoặc ảnh bayer.

mask_circle(x: int, y: int, radius: int) Image

Xóa về zero một phần hình tròn của ảnh. Nếu không có đối số nào được cung cấp thì phương thức này xóa về zero phần trung tâm của ảnh.

Trả về đối tượng ảnh để bạn có thể gọi phương thức khác sử dụng ký hiệu ..

Không hỗ trợ trên ảnh nén hoặc ảnh bayer.

mask_ellipse(x: int, y: int, radius_x: int, radius_y: int, rotation_angle_in_degrees: int) Image

Xóa về zero một phần hình ellipse của ảnh. Nếu không có đối số nào được cung cấp thì phương thức này xóa về zero phần trung tâm của ảnh.

Trả về đối tượng ảnh để bạn có thể gọi phương thức khác sử dụng ký hiệu ..

Không hỗ trợ trên ảnh nén hoặc ảnh bayer.

Các phương thức nhị phân

binary(thresholds: List[Tuple[int, int]], invert: bool = False, zero: bool = False, mask: Image | None = None, to_bitmap: bool = False, copy: bool = False) Image

Đặt tất cả các điểm ảnh trong ảnh thành đen hoặc trắng tùy thuộc vào việc mỗi điểm ảnh có nằm trong một trong các tuple ngưỡng trong thresholds hay không.

thresholds là danh sách các tuple (lo, hi) cho ảnh thang xám, hoặc các tuple (l_lo, l_hi, a_lo, a_hi, b_lo, b_hi) cho ảnh RGB565. Các giá trị min/max bị hoán đổi sẽ được tự động sửa; các thành phần bị thiếu mặc định về phạm vi tối đa.

invert đảo ngược khớp ngưỡng.

zero nếu True, xóa về zero các điểm ảnh đã được phân ngưỡng và để nguyên các điểm ảnh khác.

mask là ảnh nhị phân được sử dụng làm mặt nạ ở cấp điểm ảnh; chỉ các điểm ảnh được đặt trong mặt nạ mới được sửa đổi.

to_bitmap nếu True, chuyển đổi dữ liệu ảnh thành bitmap 1-bit-mỗi-điểm-ảnh. Đối với các ảnh rất nhỏ điều này có thể yêu cầu copy=True.

copy nếu True, trả về ảnh mới trên heap thay vì sửa đổi ảnh nguồn.

Trả về đối tượng ảnh để bạn có thể gọi phương thức khác sử dụng ký hiệu ..

Không hỗ trợ trên ảnh nén hoặc ảnh bayer.

invert() Image

Đảo ngược tất cả các giá trị điểm ảnh trong ảnh (mỗi điểm ảnh trở thành 255 - pixel cho các kênh 8-bit).

Trả về đối tượng ảnh để bạn có thể gọi phương thức khác sử dụng ký hiệu ..

Không hỗ trợ trên ảnh nén hoặc ảnh bayer/yuv.

b_and(image: Image, mask: Image | None = None) Image

Thực hiện phép AND logic ảnh này với ảnh khác.

image có thể là đối tượng ảnh, đường dẫn đến tệp ảnh không nén (bmp/pgm/ppm), hoặc giá trị vô hướng (tuple RGB888 hoặc giá trị điểm ảnh cơ bản).

mask là ảnh nhị phân được sử dụng làm mặt nạ ở cấp điểm ảnh; chỉ các điểm ảnh được đặt trong mặt nạ mới được sửa đổi.

Trả về đối tượng ảnh để bạn có thể gọi phương thức khác sử dụng ký hiệu ..

Không hỗ trợ trên ảnh nén hoặc ảnh bayer.

b_nand(image: Image, mask: Image | None = None) Image

Thực hiện phép NAND logic ảnh này với ảnh khác.

image có thể là đối tượng ảnh, đường dẫn đến tệp ảnh không nén (bmp/pgm/ppm), hoặc giá trị vô hướng (tuple RGB888 hoặc giá trị điểm ảnh cơ bản).

mask là ảnh nhị phân được sử dụng làm mặt nạ ở cấp điểm ảnh; chỉ các điểm ảnh được đặt trong mặt nạ mới được sửa đổi.

Trả về đối tượng ảnh để bạn có thể gọi phương thức khác sử dụng ký hiệu ..

Không hỗ trợ trên ảnh nén hoặc ảnh bayer.

b_or(image: Image, mask: Image | None = None) Image

Thực hiện phép OR logic ảnh này với ảnh khác.

image có thể là đối tượng ảnh, đường dẫn đến tệp ảnh không nén (bmp/pgm/ppm), hoặc giá trị vô hướng (tuple RGB888 hoặc giá trị điểm ảnh cơ bản).

mask là ảnh nhị phân được sử dụng làm mặt nạ ở cấp điểm ảnh; chỉ các điểm ảnh được đặt trong mặt nạ mới được sửa đổi.

Trả về đối tượng ảnh để bạn có thể gọi phương thức khác sử dụng ký hiệu ..

Không hỗ trợ trên ảnh nén hoặc ảnh bayer.

b_nor(image: Image, mask: Image | None = None) Image

Thực hiện phép NOR logic ảnh này với ảnh khác.

image có thể là đối tượng ảnh, đường dẫn đến tệp ảnh không nén (bmp/pgm/ppm), hoặc giá trị vô hướng (tuple RGB888 hoặc giá trị điểm ảnh cơ bản).

mask là ảnh nhị phân được sử dụng làm mặt nạ ở cấp điểm ảnh; chỉ các điểm ảnh được đặt trong mặt nạ mới được sửa đổi.

Trả về đối tượng ảnh để bạn có thể gọi phương thức khác sử dụng ký hiệu ..

Không hỗ trợ trên ảnh nén hoặc ảnh bayer.

b_xor(image: Image, mask: Image | None = None) Image

Thực hiện phép XOR logic ảnh này với ảnh khác.

image có thể là đối tượng ảnh, đường dẫn đến tệp ảnh không nén (bmp/pgm/ppm), hoặc giá trị vô hướng (tuple RGB888 hoặc giá trị điểm ảnh cơ bản).

mask là ảnh nhị phân được sử dụng làm mặt nạ ở cấp điểm ảnh; chỉ các điểm ảnh được đặt trong mặt nạ mới được sửa đổi.

Trả về đối tượng ảnh để bạn có thể gọi phương thức khác sử dụng ký hiệu ..

Không hỗ trợ trên ảnh nén hoặc ảnh bayer.

b_xnor(image: Image, mask: Image | None = None) Image

Thực hiện phép XNOR logic ảnh này với ảnh khác.

image có thể là đối tượng ảnh, đường dẫn đến tệp ảnh không nén (bmp/pgm/ppm), hoặc giá trị vô hướng (tuple RGB888 hoặc giá trị điểm ảnh cơ bản).

mask là ảnh nhị phân được sử dụng làm mặt nạ ở cấp điểm ảnh; chỉ các điểm ảnh được đặt trong mặt nạ mới được sửa đổi.

Trả về đối tượng ảnh để bạn có thể gọi phương thức khác sử dụng ký hiệu ..

Không hỗ trợ trên ảnh nén hoặc ảnh bayer.

Các phương thức ISP

awb(max: bool = False) Image

Thực hiện cân bằng trắng tự động trên ảnh sử dụng thuật toán gray-world. Hoạt động trên ảnh RAW Bayer hoặc RGB565. Không có hiệu ứng trên ảnh nhị phân/thang xám.

max nếu True, sử dụng thuật toán white-patch thay thế.

Trả về đối tượng ảnh để bạn có thể gọi phương thức khác sử dụng ký hiệu ..

Không hỗ trợ trên ảnh nén hoặc yuv.

ccm(matrix: List[List[float]]) Image

Nhân ma trận hiệu chỉnh màu sắc dạng dấu phẩy động được truyền vào với ảnh. Ma trận có thể là 3x3 hoặc 3x4 (với cột offset), ở dạng danh sách lồng nhau hoặc danh sách phẳng:

[[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]

Trả về đối tượng ảnh để bạn có thể gọi phương thức khác sử dụng ký hiệu ..

Không hỗ trợ trên ảnh nén hoặc ảnh bayer/yuv.

gamma(gamma: float = 1.0, contrast: float = 1.0, brightness: float = 0.0) Image

Điều chỉnh gamma, độ tương phản và độ sáng của ảnh.

gamma áp dụng pow(pixel, 1/gamma) sau khi chuẩn hóa. Các giá trị lớn hơn 1.0 làm sáng hơn; nhỏ hơn 1.0 làm tối hơn.

contrast áp dụng pixel * contrast sau khi chuẩn hóa.

brightness áp dụng pixel + brightness sau khi chuẩn hóa.

Trả về đối tượng ảnh để bạn có thể gọi phương thức khác sử dụng ký hiệu ..

Không hỗ trợ trên ảnh nén hoặc bayer/yuv.

gamma_corr(gamma: float = 1.0, contrast: float = 1.0, brightness: float = 0.0) Image

Bí danh cho Image.gamma.

Các phương thức toán học

negate() Image

Bí danh cho Image.invert.

replace(image: Image | None = None, **kwargs) Image

Bí danh cho Image.draw_image(). Thay thế ảnh này bằng image (hoặc biến đổi ảnh này tại chỗ nếu image bị bỏ qua) sử dụng các đối số từ khóa chuẩn của draw_image. Đối số transformndarray 3x3 mô tả phép biến đổi phối cảnh (chỉ được hỗ trợ trên các camera OpenMV có ULAB được bật).

assign(image: Image | None = None, **kwargs) Image

Bí danh cho Image.replace().

set(image: Image | None = None, **kwargs) Image

Bí danh cho Image.replace().

add(image: Image, mask: Image | None = None) Image

Cộng ảnh khác vào ảnh này theo từng điểm ảnh.

image có thể là đối tượng ảnh, đường dẫn đến tệp ảnh không nén (bmp/pgm/ppm), hoặc giá trị vô hướng (tuple RGB888 hoặc giá trị điểm ảnh cơ bản).

mask là ảnh nhị phân được sử dụng làm mặt nạ ở cấp điểm ảnh; chỉ các điểm ảnh được đặt trong mặt nạ mới được sửa đổi.

Trả về đối tượng ảnh để bạn có thể gọi phương thức khác sử dụng ký hiệu ..

Không hỗ trợ trên ảnh nén hoặc ảnh bayer.

sub(image: Image, mask: Image | None = None) Image

Trừ image khỏi ảnh này theo từng điểm ảnh (self - image).

image có thể là đối tượng ảnh, đường dẫn đến tệp ảnh không nén (bmp/pgm/ppm), hoặc giá trị vô hướng (tuple RGB888 hoặc giá trị điểm ảnh cơ bản).

mask là ảnh nhị phân được sử dụng làm mặt nạ ở cấp điểm ảnh; chỉ các điểm ảnh được đặt trong mặt nạ mới được sửa đổi.

Phương thức này cũng chấp nhận đầy đủ các đối số từ khóa của Image.draw_image() (x, y, x_scale, y_scale, roi, rgb_channel, alpha, color_palette, alpha_palette, hint, transform).

Không hỗ trợ trên ảnh nén hoặc ảnh bayer.

rsub(image: Image, mask: Image | None = None) Image

Trừ ngược: thay thế ảnh này bằng image - self theo từng điểm ảnh. Ngoài ra giống hệt với Image.sub().

min(image: Image, mask: Image | None = None) Image

Trả về ảnh tối thiểu của hai ảnh theo từng điểm ảnh.

image có thể là đối tượng ảnh, đường dẫn đến tệp ảnh không nén (bmp/pgm/ppm), hoặc giá trị vô hướng (tuple RGB888 hoặc giá trị điểm ảnh cơ bản).

mask là ảnh nhị phân được sử dụng làm mặt nạ ở cấp điểm ảnh; chỉ các điểm ảnh được đặt trong mặt nạ mới được sửa đổi.

Trả về đối tượng ảnh để bạn có thể gọi phương thức khác sử dụng ký hiệu ..

Không hỗ trợ trên ảnh nén hoặc ảnh bayer.

max(image: Image, mask: Image | None = None) Image

Trả về ảnh tối đa của hai ảnh theo từng điểm ảnh.

image có thể là đối tượng ảnh, đường dẫn đến tệp ảnh không nén (bmp/pgm/ppm), hoặc giá trị vô hướng (tuple RGB888 hoặc giá trị điểm ảnh cơ bản).

mask là ảnh nhị phân được sử dụng làm mặt nạ ở cấp điểm ảnh; chỉ các điểm ảnh được đặt trong mặt nạ mới được sửa đổi.

Trả về đối tượng ảnh để bạn có thể gọi phương thức khác sử dụng ký hiệu ..

Không hỗ trợ trên ảnh nén hoặc ảnh bayer.

difference(image: Image, mask: Image | None = None) Image

Trả về ảnh hiệu tuyệt đối giữa hai ảnh (ví dụ: ||a-b||).

image có thể là đối tượng ảnh, đường dẫn đến tệp ảnh không nén (bmp/pgm/ppm), hoặc giá trị vô hướng (tuple RGB888 hoặc giá trị điểm ảnh cơ bản).

mask là ảnh nhị phân được sử dụng làm mặt nạ ở cấp điểm ảnh; chỉ các điểm ảnh được đặt trong mặt nạ mới được sửa đổi.

Trả về đối tượng ảnh để bạn có thể gọi phương thức khác sử dụng ký hiệu ..

Không hỗ trợ trên ảnh nén hoặc ảnh bayer.

blend(image: Image, x: int = 0, y: int = 0, alpha: int = 128, mask: Image | None = None, **kwargs) Image

Bí danh cho Image.draw_image(). Pha trộn alpha image vào ảnh này. alpha là số nguyên 0-256; các giá trị gần 256 hơn ưu tiên ảnh nguồn. Chấp nhận tất cả các đối số từ khóa của Image.draw_image().

histeq(adaptive: bool = False, clip_limit: float = -1, mask: Image | None = None) Image

Chạy cân bằng biểu đồ tần suất trên ảnh để chuẩn hóa độ tương phản và độ sáng.

adaptive nếu True, chạy cân bằng biểu đồ tần suất thích nghi (chậm hơn nhưng thường tốt hơn).

clip_limit giới hạn độ tương phản trong biến thể thích nghi (giá trị nhỏ như 10 cho kết quả CLAHE tốt).

mask là ảnh nhị phân được sử dụng làm mặt nạ ở cấp điểm ảnh; chỉ các điểm ảnh được đặt trong mặt nạ mới được sửa đổi.

Trả về đối tượng ảnh để bạn có thể gọi phương thức khác sử dụng ký hiệu ..

Không hỗ trợ trên ảnh nén hoặc ảnh bayer.

Các phương thức lọc

erode(size: int, threshold: int | None = None, mask: Image | None = None) Image

Xóa các điểm ảnh khỏi các cạnh của các vùng đã phân vùng. Tích chập nhân ((size*2)+1)x((size*2)+1) trên ảnh, xóa điểm ảnh trung tâm nếu nhiều hơn threshold điểm ảnh lân cận bị xóa (hoạt động như erode chuẩn nếu threshold là None).

mask là ảnh nhị phân được sử dụng làm mặt nạ ở cấp điểm ảnh; chỉ các điểm ảnh được đặt trong mặt nạ mới được sửa đổi.

Trả về đối tượng ảnh để bạn có thể gọi phương thức khác sử dụng ký hiệu ..

Không hỗ trợ trên ảnh nén hoặc ảnh bayer/yuv.

dilate(size: int, threshold: int | None = None, mask: Image | None = None) Image

Thêm các điểm ảnh vào các cạnh của các vùng đã phân vùng. Tích chập nhân ((size*2)+1)x((size*2)+1) trên ảnh, đặt điểm ảnh trung tâm nếu nhiều hơn threshold điểm ảnh lân cận được đặt (hoạt động như dilate chuẩn nếu threshold là None).

mask là ảnh nhị phân được sử dụng làm mặt nạ ở cấp điểm ảnh; chỉ các điểm ảnh được đặt trong mặt nạ mới được sửa đổi.

Trả về đối tượng ảnh để bạn có thể gọi phương thức khác sử dụng ký hiệu ..

Không hỗ trợ trên ảnh nén hoặc ảnh bayer/yuv.

open(size: int, threshold: int | None = None, mask: Image | None = None) Image

Thực hiện erosion sau đó dilation. Xem Image.erode()Image.dilate().

mask là ảnh nhị phân được sử dụng làm mặt nạ ở cấp điểm ảnh; chỉ các điểm ảnh được đặt trong mặt nạ mới được sửa đổi.

Không hỗ trợ trên ảnh nén hoặc ảnh bayer/yuv.

close(size: int, threshold: int | None = None, mask: Image | None = None) Image

Thực hiện dilation sau đó erosion. Xem Image.dilate()Image.erode().

mask là ảnh nhị phân được sử dụng làm mặt nạ ở cấp điểm ảnh; chỉ các điểm ảnh được đặt trong mặt nạ mới được sửa đổi.

Không hỗ trợ trên ảnh nén hoặc ảnh bayer/yuv.

top_hat(size: int, threshold: int | None = None, mask: Image | None = None) Image

Trả về hiệu ảnh của ảnh và ảnh đã được Image.open().

mask là ảnh nhị phân được sử dụng làm mặt nạ ở cấp điểm ảnh; chỉ các điểm ảnh được đặt trong mặt nạ mới được sửa đổi.

Không hỗ trợ trên ảnh nén hoặc ảnh bayer/yuv.

black_hat(size: int, threshold: int | None = None, mask: Image | None = None) Image

Trả về hiệu ảnh của ảnh và ảnh đã được Image.close().

mask là ảnh nhị phân được sử dụng làm mặt nạ ở cấp điểm ảnh; chỉ các điểm ảnh được đặt trong mặt nạ mới được sửa đổi.

Không hỗ trợ trên ảnh nén hoặc ảnh bayer/yuv.

mean(size: int, threshold: bool | None = False, offset: int | None = 0, invert: bool | None = False, mask: Image | None = None) Image

Bộ lọc làm mờ mean chuẩn sử dụng bộ lọc hộp.

size là kích thước nhân. Dùng 1 (nhân 3x3), 2 (nhân 5x5), v.v.

threshold nếu True, thích nghi phân ngưỡng đầu ra bộ lọc thành ảnh nhị phân. offset dịch chuyển binarization (âm làm nhiều điểm ảnh trắng hơn, dương làm ít hơn). invert đảo ngược đầu ra nhị phân.

mask là ảnh nhị phân được sử dụng làm mặt nạ ở cấp điểm ảnh; chỉ các điểm ảnh được đặt trong mặt nạ mới được sửa đổi.

Trả về đối tượng ảnh để bạn có thể gọi phương thức khác sử dụng ký hiệu ..

Không hỗ trợ trên ảnh nén hoặc ảnh 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

Chạy bộ lọc phần vị trên ảnh (median theo mặc định).

size là kích thước nhân. Dùng 1 (nhân 3x3), 2 (nhân 5x5), v.v.

percentile là phần vị để chọn từ mỗi nhân (0 = min, 0.5 = median, 1.0 = max). Mặc định là 0.5.

threshold nếu True, thích nghi phân ngưỡng đầu ra bộ lọc thành ảnh nhị phân. offset dịch chuyển binarization (âm làm nhiều điểm ảnh trắng hơn, dương làm ít hơn). invert đảo ngược đầu ra nhị phân.

mask là ảnh nhị phân được sử dụng làm mặt nạ ở cấp điểm ảnh; chỉ các điểm ảnh được đặt trong mặt nạ mới được sửa đổi.

Trả về đối tượng ảnh để bạn có thể gọi phương thức khác sử dụng ký hiệu ..

Không hỗ trợ trên ảnh nén hoặc ảnh bayer/yuv.

mode(size: int, threshold: bool | None = False, offset: int | None = 0, invert: bool | None = False, mask: Image | None = None) Image

Thay thế mỗi điểm ảnh bằng mode của các điểm ảnh lân cận. Có thể tạo ra các tạo phẩm trên các cạnh ảnh RGB do phép toán phi tuyến.

size là kích thước nhân. Dùng 1 (nhân 3x3), 2 (nhân 5x5), v.v.

threshold nếu True, thích nghi phân ngưỡng đầu ra bộ lọc thành ảnh nhị phân. offset dịch chuyển binarization (âm làm nhiều điểm ảnh trắng hơn, dương làm ít hơn). invert đảo ngược đầu ra nhị phân.

mask là ảnh nhị phân được sử dụng làm mặt nạ ở cấp điểm ảnh; chỉ các điểm ảnh được đặt trong mặt nạ mới được sửa đổi.

Trả về đối tượng ảnh để bạn có thể gọi phương thức khác sử dụng ký hiệu ..

Không hỗ trợ trên ảnh nén hoặc ảnh 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

Chạy bộ lọc midpoint trên ảnh. Bộ lọc này tìm midpoint ((max-min)/2) của mỗi vùng lân cận điểm ảnh trong ảnh.

size là kích thước nhân. Dùng 1 (nhân 3x3), 2 (nhân 5x5), v.v.

bias kiểm soát sự pha trộn min/max. 0 để chỉ lọc min, 1.0 để chỉ lọc max. Bằng cách sử dụng bias bạn có thể lọc min/max trên ảnh.

threshold nếu True, thích nghi phân ngưỡng đầu ra bộ lọc thành ảnh nhị phân. offset dịch chuyển binarization (âm làm nhiều điểm ảnh trắng hơn, dương làm ít hơn). invert đảo ngược đầu ra nhị phân.

mask là ảnh nhị phân được sử dụng làm mặt nạ ở cấp điểm ảnh; chỉ các điểm ảnh được đặt trong mặt nạ mới được sửa đổi.

Trả về đối tượng ảnh để bạn có thể gọi phương thức khác sử dụng ký hiệu ..

Không hỗ trợ trên ảnh nén hoặc ảnh 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

Tích chập ảnh với nhân bộ lọc tùy ý.

size kiểm soát kích thước nhân, phải là ((size*2)+1)x((size*2)+1) phần tử.

kernel là nhân để tích chập, dưới dạng danh sách/tuple 1D phẳng gồm ((size*2)+1)*((size*2)+1) phần tử, hoặc dưới dạng danh sách/tuple 2D với ((size*2)+1) hàng gồm ((size*2)+1) phần tử.

mul là tỷ lệ độ tương phản nhân (mặc định 1.0).

add là độ lệch độ sáng cộng (mặc định 0.0).

threshold nếu True, thích nghi phân ngưỡng đầu ra bộ lọc thành ảnh nhị phân. offset dịch chuyển binarization (âm làm nhiều điểm ảnh trắng hơn, dương làm ít hơn). invert đảo ngược đầu ra nhị phân.

mask là ảnh nhị phân được sử dụng làm mặt nạ ở cấp điểm ảnh; chỉ các điểm ảnh được đặt trong mặt nạ mới được sửa đổi.

Trả về đối tượng ảnh để bạn có thể gọi phương thức khác sử dụng ký hiệu ..

Không hỗ trợ trên ảnh nén hoặc ảnh 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

Tích chập ảnh với nhân gaussian làm mờ.

size là kích thước nhân. Dùng 1 (nhân 3x3), 2 (nhân 5x5), v.v.

unsharp nếu True, thực hiện thao tác mặt nạ unsharp (làm nét cạnh) thay vì gaussian thuần túy.

mul là tỷ lệ độ tương phản nhân (mặc định 1.0).

add là độ lệch độ sáng cộng (mặc định 0.0).

threshold nếu True, thích nghi phân ngưỡng đầu ra bộ lọc thành ảnh nhị phân. offset dịch chuyển binarization (âm làm nhiều điểm ảnh trắng hơn, dương làm ít hơn). invert đảo ngược đầu ra nhị phân.

mask là ảnh nhị phân được sử dụng làm mặt nạ ở cấp điểm ảnh; chỉ các điểm ảnh được đặt trong mặt nạ mới được sửa đổi.

Trả về đối tượng ảnh để bạn có thể gọi phương thức khác sử dụng ký hiệu ..

Không hỗ trợ trên ảnh nén hoặc ảnh 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

Tích chập ảnh với nhân laplacian phát hiện cạnh.

size là kích thước nhân. Dùng 1 (nhân 3x3), 2 (nhân 5x5), v.v.

sharpen nếu True, làm nét ảnh thay vì xuất ra phản hồi cạnh chưa được phân ngưỡng.

mul là tỷ lệ độ tương phản nhân (mặc định 1.0).

add là độ lệch độ sáng cộng (mặc định 0.0).

threshold nếu True, thích nghi phân ngưỡng đầu ra bộ lọc thành ảnh nhị phân. offset dịch chuyển binarization (âm làm nhiều điểm ảnh trắng hơn, dương làm ít hơn). invert đảo ngược đầu ra nhị phân.

mask là ảnh nhị phân được sử dụng làm mặt nạ ở cấp điểm ảnh; chỉ các điểm ảnh được đặt trong mặt nạ mới được sửa đổi.

Trả về đối tượng ảnh để bạn có thể gọi phương thức khác sử dụng ký hiệu ..

Không hỗ trợ trên ảnh nén hoặc ảnh 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

Tích chập ảnh với bộ lọc bilateral (làm mờ giữ cạnh).

size là kích thước nhân. Dùng 1 (nhân 3x3), 2 (nhân 5x5), v.v.

color_sigma kiểm soát dung sai khớp màu sắc; giá trị lớn hơn tạo ra nhiều làm mờ màu sắc hơn.

space_sigma kiểm soát làm mờ không gian; giá trị lớn hơn tạo ra nhiều làm mờ điểm ảnh hơn.

threshold nếu True, thích nghi phân ngưỡng đầu ra bộ lọc thành ảnh nhị phân. offset dịch chuyển binarization (âm làm nhiều điểm ảnh trắng hơn, dương làm ít hơn). invert đảo ngược đầu ra nhị phân.

mask là ảnh nhị phân được sử dụng làm mặt nạ ở cấp điểm ảnh; chỉ các điểm ảnh được đặt trong mặt nạ mới được sửa đổi.

Trả về đối tượng ảnh để bạn có thể gọi phương thức khác sử dụng ký hiệu ..

Không hỗ trợ trên ảnh nén hoặc ảnh bayer/yuv.

Các phương thức hình học

linpolar(reverse: bool = False, *, x: int | None = None, y: int | None = None) Image

Chiếu lại ảnh từ tọa độ Descartes sang tọa độ cực tuyến tính.

Đặt reverse=True để chiếu lại theo chiều ngược lại.

xy chỉ định tọa độ trung tâm của phép biến đổi tính bằng điểm ảnh. Nếu xNone (mặc định) thì nó được đặt bằng một nửa chiều rộng ảnh; tương tự y mặc định là một nửa chiều cao ảnh.

Chiếu lại cực tuyến tính biến xoay ảnh thành dịch chuyển theo x.

Không hỗ trợ trên ảnh nén hoặc ảnh bayer.

Phương thức này không khả dụng trên OpenMV Cam M4.

logpolar(reverse: bool = False, *, x: int | None = None, y: int | None = None) Image

Chiếu lại ảnh từ tọa độ Descartes sang tọa độ cực logarithmic.

Đặt reverse=True để chiếu lại theo chiều ngược lại.

xy chỉ định tọa độ trung tâm của phép biến đổi tính bằng điểm ảnh. Nếu xNone (mặc định) thì nó được đặt bằng một nửa chiều rộng ảnh; tương tự y mặc định là một nửa chiều cao ảnh.

Chiếu lại cực logarithmic biến xoay ảnh thành dịch chuyển theo x và co giãn/thu phóng thành dịch chuyển theo y.

Không hỗ trợ trên ảnh nén hoặc ảnh bayer.

Phương thức này không khả dụng trên OpenMV Cam M4.

lens_corr(strength: float = 1.8, zoom: float = 1.0, x_corr: float = 0.0, y_corr: float = 0.0) Image

Thực hiện hiệu chỉnh lens để bỏ hiệu ứng fisheye của ảnh do méo lens.

strength là float xác định mức độ bỏ hiệu ứng fisheye của ảnh. Thử 1.8 làm mặc định rồi tăng hoặc giảm cho đến khi ảnh trông đẹp.

zoom là lượng phóng to ảnh. Mặc định là 1.0.

x_corr là độ lệch điểm ảnh dấu phẩy động từ trung tâm. Có thể âm hoặc dương.

y_corr là độ lệch điểm ảnh dấu phẩy động từ trung tâm. Có thể âm hoặc dương.

Trả về đối tượng ảnh để bạn có thể gọi phương thức khác sử dụng ký hiệu ..

Không hỗ trợ trên ảnh nén hoặc ảnh 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

Hiệu chỉnh các vấn đề phối cảnh trong ảnh bằng cách thực hiện phép xoay 3D của bộ đệm khung hình.

x_rotation là số độ để xoay ảnh trong bộ đệm khung hình xung quanh trục x (tức là điều này xoay ảnh lên và xuống).

y_rotation là số độ để xoay ảnh trong bộ đệm khung hình xung quanh trục y (tức là điều này xoay ảnh sang trái và phải).

z_rotation là số độ để xoay ảnh trong bộ đệm khung hình xung quanh trục z (tức là điều này xoay ảnh tại chỗ).

x_translation là số đơn vị để di chuyển ảnh sang trái hoặc phải sau khi xoay. Vì phép dịch chuyển này được áp dụng trong không gian 3D nên các đơn vị không phải là điểm ảnh...

y_translation là số đơn vị để di chuyển ảnh lên hoặc xuống sau khi xoay. Vì phép dịch chuyển này được áp dụng trong không gian 3D nên các đơn vị không phải là điểm ảnh...

zoom là lượng phóng to ảnh. Mặc định là 1.0.

fov là trường nhìn được sử dụng cho phép chiếu nội bộ 2D->3D. Khi fov tiến đến 0 thì ảnh được đặt ở vô cực; khi tiến đến 180 thì ảnh được đặt trong viewport.

corners là danh sách bốn tuple (x, y) được sử dụng để xây dựng ánh xạ homography 4 điểm ánh xạ các góc đến (0, 0), (image_width-1, 0), (image_width-1, image_height-1), và (0, image_height-1) trước khi áp dụng phép xoay 3D. Hữu ích cho các phép biến đổi góc nhìn chim.

Trả về đối tượng ảnh để bạn có thể gọi phương thức khác sử dụng ký hiệu ..

Không hỗ trợ trên ảnh nén hoặc ảnh bayer.

Phương thức này không khả dụng trên OpenMV Cam M4.

Các phương thức lấy dữ liệu

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

Tính toán sự tương đồng giữa hai ảnh sử dụng Chỉ số Tương đồng Cấu trúc (SSIM). SSIM dao động từ -1 (đối lập) đến 1 (giống hệt). Trả về đối tượng image.similarity.

image là ảnh để so sánh (đối tượng ảnh hoặc chuỗi đường dẫn, ví dụ: "test.jpg").

x, y, x_scale, y_scale, roi, rgb_channel, alpha, color_palette, alpha_palette, hint, và transform chấp nhận các giá trị giống như Image.draw_image().

dssim nếu True, trả về Chỉ số Bất tương đồng Cấu trúc (DSSIM) thay vào đó, trong đó 0 có nghĩa là giống hệt và 1 có nghĩa là hoàn toàn khác nhau.

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

Tính toán biểu đồ tần suất được chuẩn hóa trên tất cả các kênh màu sắc cho một roi và trả về đối tượng image.histogram. Cũng khả dụng như Image.get_hist() hoặc Image.histogram().

thresholds là danh sách các tuple (lo, hi) cho ảnh thang xám, hoặc các tuple (l_lo, l_hi, a_lo, a_hi, b_lo, b_hi) cho ảnh RGB565. Nếu được truyền, biểu đồ tần suất chỉ được tính toán trên các điểm ảnh nằm trong ngưỡng.

invert đảo ngược khớp ngưỡng.

roi là tuple hình chữ nhật vùng quan tâm (ROI) (x, y, w, h). Mặc định là hình chữ nhật ảnh.

bins (thang xám) hoặc l_bins/a_bins/b_bins (RGB565) đặt số lượng bin biểu đồ tần suất mỗi kênh. Phải lớn hơn 2. Mặc định là số bin tối đa mỗi kênh.

difference có thể được đặt thành đối tượng ảnh để thao tác trên hiệu giữa ảnh hiện tại và ảnh đó mà không cần bộ đệm thêm.

Không hỗ trợ trên ảnh nén hoặc ảnh 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

Tính toán mean, median, mode, độ lệch chuẩn, min, max, tứ phân vị dưới và tứ phân vị trên cho tất cả các kênh màu sắc cho một roi và trả về đối tượng image.statistics. Cũng khả dụng như Image.get_stats() hoặc Image.statistics().

thresholds là danh sách các tuple (lo, hi) cho ảnh thang xám, hoặc các tuple (l_lo, l_hi, a_lo, a_hi, b_lo, b_hi) cho ảnh RGB565. Nếu được truyền, thống kê chỉ được tính toán trên các điểm ảnh nằm trong ngưỡng.

invert đảo ngược khớp ngưỡng.

roi là tuple hình chữ nhật vùng quan tâm (ROI) (x, y, w, h). Mặc định là hình chữ nhật ảnh.

bins (thang xám) hoặc l_bins/a_bins/b_bins (RGB565) đặt số lượng bin biểu đồ tần suất mỗi kênh. Phải lớn hơn 2. Mặc định là số bin tối đa mỗi kênh.

difference có thể được đặt thành đối tượng ảnh để thao tác trên hiệu giữa ảnh hiện tại và ảnh đó mà không cần bộ đệm thêm.

Không hỗ trợ trên ảnh nén hoặc ảnh 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

Tính toán hồi quy tuyến tính (Theil-Sen) trên tất cả các điểm ảnh đã được phân ngưỡng trong ảnh. Trả về đối tượng image.line, hoặc None nếu không tìm thấy đường thẳng.

thresholds là danh sách các tuple (lo, hi) cho ảnh thang xám, hoặc các tuple (l_lo, l_hi, a_lo, a_hi, b_lo, b_hi) cho ảnh RGB565.

invert đảo ngược khớp ngưỡng.

roi là tuple hình chữ nhật vùng quan tâm (ROI) (x, y, w, h). Mặc định là hình chữ nhật ảnh.

x_stridey_stride kiểm soát số điểm ảnh bị bỏ qua trong khi đánh giá ảnh.

area_threshold diện tích hộp giới hạn tối thiểu; các kết quả nhỏ hơn trả về None.

pixels_threshold số lượng điểm ảnh đã phân ngưỡng tối thiểu; các kết quả nhỏ hơn trả về None.

target_size là tuple (w, h). ROI được thu nhỏ theo diện tích để vừa vặn trong kích thước này trước khi chạy thuật toán O(N^2). Mặc định là (80, 60).

Không hỗ trợ trên ảnh nén hoặc ảnh bayer.

Các phương thức phát hiện

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]

Tìm tất cả các vùng màu (blobs) (các vùng điểm ảnh liên kết vượt qua bài kiểm tra ngưỡng) trong ảnh và trả về danh sách các đối tượng image.blob.

thresholds là danh sách các tuple (lo, hi) cho ảnh thang xám, hoặc các tuple (l_lo, l_hi, a_lo, a_hi, b_lo, b_hi) cho ảnh RGB565 (kênh LAB). Có thể truyền tối đa 32 tuple. Các giá trị min/max bị hoán đổi sẽ được tự động sửa; các thành phần bị thiếu mặc định về phạm vi tối đa.

invert đảo ngược khớp ngưỡng.

roi là tuple hình chữ nhật vùng quan tâm (ROI) (x, y, w, h). Mặc định là hình chữ nhật ảnh.

x_stridey_stride kiểm soát số điểm ảnh bị bỏ qua trong khi tìm kiếm vùng màu. Tăng nếu các vùng màu được biết là lớn.

area_threshold diện tích hộp giới hạn tối thiểu; các vùng màu nhỏ hơn bị lọc.

pixels_threshold số lượng điểm ảnh đã phân ngưỡng tối thiểu; các vùng màu nhỏ hơn bị lọc.

merge nếu True thì hợp nhất các vùng màu có hình chữ nhật giới hạn giao nhau. margin phóng to/thu nhỏ các hình chữ nhật giới hạn được sử dụng để kiểm tra giao nhau. Các vùng màu đã hợp nhất thực hiện phép OR trên các vector bit code của chúng (một bit mỗi ngưỡng).

threshold_cb được gọi cho mỗi vùng màu sau khi phân ngưỡng; trả về True để giữ lại, False để lọc.

merge_cb được gọi cho mỗi cặp vùng màu sắp được hợp nhất; trả về True để cho phép hợp nhất, False để ngăn chặn.

x_hist_bins_max nếu khác không, điền vào mỗi vùng màu với phép chiếu x_histogram sử dụng số lượng bin này.

y_hist_bins_max nếu khác không, điền vào mỗi vùng màu với phép chiếu y_histogram sử dụng số lượng bin này.

Không hỗ trợ trên ảnh nén hoặc ảnh 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]

Tìm tất cả các đường thẳng vô hạn trong ảnh sử dụng phép biến đổi hough. Trả về danh sách các đối tượng image.line.

roi là tuple hình chữ nhật vùng quan tâm (ROI) (x, y, w, h). Mặc định là hình chữ nhật ảnh.

x_stridey_stride kiểm soát số điểm ảnh bị bỏ qua trong quá trình biến đổi hough.

threshold độ lớn đường thẳng tối thiểu (tổng độ lớn sobel dọc theo đường thẳng); các đường thẳng dưới ngưỡng này bị lọc.

theta_marginrho_margin kiểm soát việc hợp nhất: các đường thẳng nằm trong các ngưỡng này được hợp nhất.

Không hỗ trợ trên ảnh nén hoặc ảnh bayer.

Phương thức này không khả dụng trên 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]

Tìm các đoạn thẳng trong ảnh. Trả về danh sách các đối tượng image.line.

roi là tuple hình chữ nhật vùng quan tâm (ROI) (x, y, w, h). Mặc định là hình chữ nhật ảnh.

merge_distance là khoảng cách điểm ảnh tối đa giữa hai đoạn thẳng để được hợp nhất.

max_theta_difference là sự khác biệt theta tối đa tính bằng độ giữa các đoạn thẳng để được hợp nhất.

Phương thức này không khả dụng trên 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]

Tìm các hình tròn trong ảnh sử dụng phép biến đổi hough. Trả về danh sách các đối tượng image.circle.

roi là tuple hình chữ nhật vùng quan tâm (ROI) (x, y, w, h). Mặc định là hình chữ nhật ảnh.

x_stridey_stride kiểm soát số điểm ảnh bị bỏ qua trong quá trình biến đổi hough.

threshold độ lớn hình tròn tối thiểu (tổng độ lớn sobel dọc theo hình tròn); các hình tròn dưới ngưỡng này bị lọc.

x_margin, y_margin, và r_margin kiểm soát việc hợp nhất: các hình tròn nằm trong các ngưỡng này được hợp nhất.

r_min bán kính hình tròn tối thiểu. Mặc định là 2.

r_max bán kính hình tròn tối đa. Mặc định là min(roi.w/2, roi.h/2).

r_step kích thước bước bán kính. Mặc định là 2.

Phương thức này không khả dụng trên OpenMV Cam M4.

find_rects(roi: Tuple[int, int, int, int] | None = None, threshold: int = 1000) List[rect]

Tìm các hình chữ nhật trong ảnh sử dụng thuật toán phát hiện quad apriltag. Trả về danh sách các đối tượng image.rect.

roi là tuple hình chữ nhật vùng quan tâm (ROI) (x, y, w, h). Mặc định là hình chữ nhật ảnh.

threshold độ lớn cạnh tối thiểu (tổng độ lớn sobel dọc theo các cạnh hình chữ nhật); các hình chữ nhật dưới ngưỡng này bị lọc.

Phương thức này không khả dụng trên OpenMV Cam M4.

find_qrcodes(roi: Tuple[int, int, int, int] | None = None) List[qrcode]

Tìm tất cả các qrcode trong roi và trả về danh sách các đối tượng image.qrcode.

roi là tuple hình chữ nhật vùng quan tâm (ROI) (x, y, w, h). Mặc định là hình chữ nhật ảnh.

Phương thức này không khả dụng trên 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]

Tìm tất cả các apriltag trong roi và trả về danh sách các đối tượng image.apriltag.

roi là tuple hình chữ nhật vùng quan tâm (ROI) (x, y, w, h). Mặc định là hình chữ nhật ảnh.

families là bitmask của các họ thẻ để giải mã. Đây là phép OR logic của:

Mặc định là image.TAG36H11. Thời gian phát hiện tăng theo số lượng họ được bật.

fxfy là tiêu cự camera X và Y tính bằng điểm ảnh.

cxcy là tâm ảnh, thường là image.width()/2image.height()/2.

Không hỗ trợ trên ảnh nén.

Phương thức này không khả dụng trên OpenMV Cam M4.

find_datamatrices(roi: Tuple[int, int, int, int] | None = None, effort: int = 200) List[datamatrix]

Tìm tất cả các datamatrix trong roi và trả về danh sách các đối tượng image.datamatrix.

roi là tuple hình chữ nhật vùng quan tâm (ROI) (x, y, w, h). Mặc định là hình chữ nhật ảnh.

effort kiểm soát bao nhiêu thời gian để cố gắng tìm các khớp data matrix. Giá trị cao hơn cải thiện phát hiện với cái giá là tốc độ khung hình. Các giá trị dưới ~160 không phát hiện được; các giá trị trên ~240 cho lợi ích giảm dần. Mặc định là 200.

Phương thức này không khả dụng trên OpenMV Cam M4.

find_barcodes(roi: Tuple[int, int, int, int] | None = None) List[barcode]

Tìm tất cả các mã vạch 1D trong roi và trả về danh sách các đối tượng image.barcode. Quét cả theo chiều ngang và dọc.

Các loại mã vạch được hỗ trợ: 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.

roi là tuple hình chữ nhật vùng quan tâm (ROI) (x, y, w, h). Mặc định là hình chữ nhật ảnh.

Phương thức này không khả dụng trên 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

Tìm độ dịch chuyển của ảnh này so với template sử dụng tương quan pha. Trả về đối tượng image.displacement.

roi là hình chữ nhật vùng quan tâm (ROI) (x, y, w, h). Mặc định là hình chữ nhật ảnh.

template_roi là vùng quan tâm của template. Mặc định là hình chữ nhật ảnh template. roitemplate_roi phải có cùng chiều rộng và chiều cao.

logpolar nếu True trả về thay đổi xoay/tỷ lệ thay vì dịch chuyển x/y.

fix_rotation_scale nếu True, tính toán độ dịch chuyển sau khi căn chỉnh xoay và tỷ lệ (chỉ có ý nghĩa khi logpolar=False).

Ghi chú

Sử dụng phương thức này trên các kích thước ảnh là lũy thừa của 2 (ví dụ: sensor.B64X64).

Không hỗ trợ trên ảnh nén hoặc ảnh bayer. Không khả dụng trên 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

Cố gắng tìm vị trí đầu tiên trong ảnh mà template khớp sử dụng Tương quan Chéo Chuẩn hóa. Trả về tuple hộp giới hạn (x, y, w, h), hoặc None.

template là ảnh thang xám để khớp với ảnh này.

threshold là giá trị (0.0-1.0). Giá trị cao hơn giảm dương tính giả và phát hiện; giá trị thấp hơn thì ngược lại.

roi là tuple hình chữ nhật vùng quan tâm (ROI) (x, y, w, h). Mặc định là hình chữ nhật ảnh.

step là số điểm ảnh bỏ qua trong khi tìm kiếm (chỉ được sử dụng trong chế độ image.SEARCH_EX).

searchimage.SEARCH_DS (tìm kiếm kim cương nhanh hơn) hoặc image.SEARCH_EX (tìm kiếm toàn diện).

Chỉ hoạt động trên ảnh thang xám.

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]]

Tìm kiếm trong ảnh các vùng khớp với Haar cascade được truyền và trả về danh sách các tuple hộp giới hạn (x, y, w, h). Trả về danh sách rỗng nếu không tìm thấy đặc trưng nào.

cascade là đối tượng Haar Cascade (xem image.HaarCascade()).

threshold (0.0-1.0). Giá trị thấp hơn tăng tỷ lệ phát hiện và tỷ lệ dương tính giả.

scale phải lớn hơn 1.0. Giá trị cao hơn chạy nhanh hơn nhưng cho kết quả khớp kém hơn.

roi là tuple hình chữ nhật vùng quan tâm (ROI) (x, y, w, h). Mặc định là hình chữ nhật ảnh.

find_eye(roi: Tuple[int, int, int, int]) Tuple[int, int]

Tìm kiếm con ngươi trong tuple vùng quan tâm (ROI) (x, y, w, h) xung quanh một mắt. Trả về vị trí (x, y) của con ngươi, hoặc (0, 0) nếu không tìm thấy.

roi là tuple hình chữ nhật vùng quan tâm (ROI) (x, y, w, h).

Chỉ hoạt động trên ảnh thang xám.

find_lbp(roi: Tuple[int, int, int, int]) lbp_descriptor

Trích xuất các điểm đặc trưng LBP (local-binary-patterns) từ vùng quan tâm. Dùng image.match_descriptor() để so sánh hai bộ mô tả.

roi là tuple hình chữ nhật vùng quan tâm (ROI) (x, y, w, h).

Chỉ hoạt động trên ảnh thang xám.

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

Trích xuất các điểm đặc trưng ORB từ vùng quan tâm. Dùng image.match_descriptor() để so sánh hai bộ mô tả. Trả về None nếu không tìm thấy điểm đặc trưng nào.

roi là tuple hình chữ nhật vùng quan tâm (ROI) (x, y, w, h). Mặc định là hình chữ nhật ảnh.

threshold (0-255) kiểm soát số lượng góc được trích xuất. Ngưỡng thấp hơn cho nhiều góc hơn. Dùng ~20 cho AGAST, ~60-80 cho FAST.

normalized nếu True, tắt trích xuất điểm đặc trưng đa độ phân giải.

scale_factor phải lớn hơn 1.0. Giá trị cao hơn chạy nhanh hơn nhưng cho kết quả khớp kém hơn.

max_keypoints là số lượng điểm đặc trưng tối đa để giữ lại.

corner_detectorimage.CORNER_FAST hoặc image.CORNER_AGAST.

Chỉ hoạt động trên ảnh thang xám.

find_edges(edge_type: int, threshold: Tuple[int, int] = (100, 200)) Image

Biến ảnh thành đen và trắng chỉ để lại các cạnh là điểm ảnh trắng.

  • image.EDGE_SIMPLE - Thuật toán bộ lọc thông cao phân ngưỡng đơn giản.

  • image.EDGE_CANNY - Thuật toán phát hiện cạnh Canny.

threshold là tuple hai giá trị chứa ngưỡng thấp và ngưỡng cao. Bạn có thể kiểm soát chất lượng cạnh bằng cách điều chỉnh các giá trị này. Mặc định là (100, 200).

Chỉ hoạt động trên ảnh thang xám.

find_hog(roi: Tuple[int, int, int, int] | None = None, size: int = 8) Image

Thay thế các điểm ảnh trong ROI bằng các đường HOG (biểu đồ tần suất của gradient có hướng).

roi là tuple hình chữ nhật vùng quan tâm (ROI) (x, y, w, h). Nếu không được chỉ định, nó bằng hình chữ nhật ảnh. Chỉ các điểm ảnh trong roi mới được thao tác.

Chỉ hoạt động trên ảnh thang xám.

Phương thức này không khả dụng trên OpenMV Cam M4.

stereo_disparity(reversed: bool = False, max_disparity: int = 64, threshold: int = 64) Image

Lấy ảnh thang xám có chiều rộng gấp đôi chứa đầu ra của hai cảm biến camera đặt cạnh nhau và thay thế một nửa bằng ảnh thị sai stereo (mỗi điểm ảnh đại diện cho độ sâu). Ví dụ: đối với hai camera 320x240 hãy truyền ảnh 640x240.

reversed Theo mặc định ảnh trái được so sánh với ảnh phải và ảnh phải được thay thế. Đặt True để so sánh phải->trái và thay thế ảnh trái.

max_disparity là khoảng cách tối đa (1-255) để tìm kiếm khối điểm ảnh khớp sử dụng tổng hiệu tuyệt đối. Giá trị lớn hơn mất thời gian theo cấp số mũ nhưng cho chất lượng đầu ra cao hơn.

threshold nếu tổng hiệu tuyệt đối giữa hai khối nhỏ hơn hoặc bằng ngưỡng này thì chúng được coi là khớp nhau.

Chạy tìm kiếm chọn lọc trên ảnh và trả về danh sách các tuple hộp giới hạn (x, y, w, h) của các đề xuất đối tượng.

threshold là ngưỡng phân vùng; giá trị cao hơn tạo ra ít vùng hơn/lớn hơn.

size là kích thước vùng tối thiểu sau khi hợp nhất.

a1, a2, a3 là các trọng số tương đồng màu sắc/kết cấu/kích thước được sử dụng khi hợp nhất các vùng.