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ặcto_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ếucopy_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.0thà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 ảnhi(tuyến tính, theo hàng chính).img[i] = valueghi 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 --
Imagecung 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ậnbytes/bytearray(ví dụ:uart.write(img),socket.send(img),hashlib.sha256(img)). Dùngbytearray()để 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:
image.AREA: Dùng co giãn diện tích khi thu nhỏ thay vì mặc định là láng giềng gần nhất.
image.BILINEAR: Dùng co giãn song tuyến tính thay vì mặc định là co giãn láng giềng gần nhất.
image.BICUBIC: Dùng co giãn lưỡng lập phương thay vì mặc định là co giãn láng giềng gần nhất.
image.CENTER: Căn giữa ảnh đang được vẽ trên màn hình hiển thị. Được áp dụng sau khi co giãn.
image.HMIRROR: Lật ảnh theo chiều ngang.
image.VFLIP: Lật ảnh theo chiều dọc.
image.TRANSPOSE: Chuyển vị ảnh (hoán đổi x/y).
image.EXTRACT_RGB_CHANNEL_FIRST: Thực hiện trích xuất kênh rgb_channel trước khi co giãn.
image.APPLY_COLOR_PALETTE_FIRST: Áp dụng bảng màu sắc trước khi co giãn.
image.SCALE_ASPECT_KEEP: Co giãn ảnh đang được vẽ để vừa vặn bên trong màn hình hiển thị.
image.SCALE_ASPECT_EXPAND: Co giãn ảnh đang được vẽ để lấp đầy màn hình hiển thị (dẫn đến cắt xén).
image.SCALE_ASPECT_IGNORE: Co giãn ảnh đang được vẽ để lấp đầy màn hình hiển thị (dẫn đến kéo dãn).
image.ROTATE_90: Xoay ảnh 90 độ (đây chỉ là VFLIP | TRANSPOSE).
image.ROTATE_180: Xoay ảnh 180 độ (đây chỉ là HMIRROR | VFLIP).
image.ROTATE_270: Xoay ảnh 270 độ (đây chỉ là HMIRROR | TRANSPOSE).
image.BLACK_BACKGROUND: Giả sử ảnh nền đang được vẽ lên là màu đen để tăng tốc độ pha trộn. Chỉ được hỗ trợ bởiImage.draw_image()vàImage.get_similarity().
- class image.Image(arg: str | int | ndarray, height: int = -1, pixformat: int = -1, *, buffer: bytes | bytearray | memoryview | None = None, copy_to_fb: bool = False)¶
Nếu
arglà 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ẫnarg. Hỗ trợ tải các tệp ảnh bmp/pgm/ppm/jpg/jpeg/png từ đĩa. Nếucopy_to_fblà 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
arglà mộtndarraythì lệnh này tạo một đối tượng ảnh mới từndarrayđó. Các đối tượngndarraycó shape(w, h)được coi là ảnh thang xám,(w, h, 3)được coi là ảnh RGB565. Hiện chỉ hỗ trợndarrayskiểu float32. Khi tạo ảnh theo cách này nếu bạn truyền đối sốbufferthì 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ếucopy_to_fblà 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ụngbuffer.Nếu
arglàintthì nó được coi là chiều rộng của ảnh mới và cần có giá trịheightvà giá trịformattheo sau để tạo một đối tượng ảnh trống mới.formatcó 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ớicopy_to_fbthì dữ liệu từbuffersẽ được sao chép vào bộ đệm khung hình. Nếu muốn tạo ảnh JPEG từ đối tượng JPEGbytes()hoặcbytearray()bạn có thể truyềnwidth,height,image.JPEGcho JPEG cùng với việc đặtbufferthà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ặcimage[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¶
- format() int¶
Trả về
image.GRAYSCALEcho ảnh thang xám,image.RGB565cho ảnh RGB565,image.BAYERcho ảnh mẫu bayer, vàimage.JPEGcho ảnh JPEG.
- bytearray() bytearray¶
Trả về đối tượng
bytearraytrỏ đế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
byteskhi được truyền cho driver MicroPython yêu cầu đối tượng kiểubytes. Đây là quyền truy cập chỉ đọc. Gọibytearray()để 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
xhoặcynằm ngoài ảnh.xvàycó thể được truyền riêng lẻ hoặc dưới dạng tuple.rgbtuplenế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()và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ớirgbtupleđượ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
..xvàycó thể được truyền riêng lẻ hoặc dưới dạng tuple.pixelcó 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()và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.dtypecó thể làb,B, hoặcfđể tạondarraycó 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ượngndarraykhông dấu 8-bit. Đối với đối tượngndarraycó dấu 8-bit, các giá trị (0:255) được ánh xạ thành (-127:128). Đối với đối tượngndarrayfloat 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ượngndarray3 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àodtype. Lưu ý rằngdtypecũng chấp nhận các giá trị số nguyên (ví dụ:ord()) củab,B, vàftương ứng.buffernếu không phảiNonelà đối tượngbytearrayđể sử dụng làm bộ đệm chondarray. NếuNonethì bộ đệm mới được cấp phát trên heap để lưu trữ dữ liệu ảnhndarray. Bạn có thể dùng đối sốbufferđể cấp phát trực tiếpndarraytrong 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_scalekiể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ếuy_scalekhông được chỉ định thì nó sẽ khớp vớix_scaleđể duy trì tỷ lệ khung hình.y_scalekiể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ếux_scalekhông được chỉ định thì nó sẽ khớp vớix_scaleđể duy trì tỷ lệ khung hình.roilà 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_channellà 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ềnrgb_channel=1thì 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.alphakiể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_palettenếu không phảiNonecó 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ấtrgb_channelnếu được sử dụng.alpha_palettenếu không phảiNonecó 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ịalphacủ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ấtrgb_channelnếu được sử dụng.hintlà phép OR logic của các cờ được liệt kê trong Hint flags (ngoại trừimage.BLACK_BACKGROUNDkhông được hỗ trợ ở đây).transformlàndarray3x3 đượ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.copynế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_fbnếu True thì ảnh được tải trực tiếp vào bộ đệm khung hình.copy_to_fbcó ưu tiên hơncopy. Đ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.GRAYSCALEvàsensor.RGB565có 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ịmasktrong 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 ảnhsensor.GRAYSCALEhoặcsensor.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_scalekiể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ếuy_scalekhông được chỉ định thì nó sẽ khớp vớix_scaleđể duy trì tỷ lệ khung hình.y_scalekiể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ếux_scalekhông được chỉ định thì nó sẽ khớp vớix_scaleđể duy trì tỷ lệ khung hình.roilà 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_channellà 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ềnrgb_channel=1thì 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.alphakiể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_palettenếu không phảiNonecó 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ấtrgb_channelnếu được sử dụng.alpha_palettenếu không phảiNonecó 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ịalphacủ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ấtrgb_channelnếu được sử dụng.hintlà phép OR logic của các cờ được liệt kê trong Hint flags (ngoại trừimage.BLACK_BACKGROUNDkhông được hỗ trợ ở đây).transformlàndarray3x3 đượ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.copynế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_fbnếu True thì ảnh được tải trực tiếp vào bộ đệm khung hình.copy_to_fbcó ưu tiên hơncopy. Đ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_scalekiể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ếuy_scalekhông được chỉ định thì nó sẽ khớp vớix_scaleđể duy trì tỷ lệ khung hình.y_scalekiể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ếux_scalekhông được chỉ định thì nó sẽ khớp vớix_scaleđể duy trì tỷ lệ khung hình.roilà 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_channellà 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ềnrgb_channel=1thì 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.alphakiể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_palettenếu không phảiNonecó 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ấtrgb_channelnếu được sử dụng.alpha_palettenếu không phảiNonecó 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ịalphacủ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ấtrgb_channelnếu được sử dụng.hintlà phép OR logic của các cờ được liệt kê trong Hint flags (ngoại trừimage.BLACK_BACKGROUNDkhông được hỗ trợ ở đây).transformlàndarray3x3 đượ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.copynế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_fbnếu True thì ảnh được tải trực tiếp vào bộ đệm khung hình.copy_to_fbcó ưu tiên hơncopy. Đ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_scalekiể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ếuy_scalekhông được chỉ định thì nó sẽ khớp vớix_scaleđể duy trì tỷ lệ khung hình.y_scalekiể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ếux_scalekhông được chỉ định thì nó sẽ khớp vớix_scaleđể duy trì tỷ lệ khung hình.roilà 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_channellà 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ềnrgb_channel=1thì 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.alphakiể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_palettenếu không phảiNonecó 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ấtrgb_channelnếu được sử dụng.alpha_palettenếu không phảiNonecó 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ịalphacủ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ấtrgb_channelnếu được sử dụng.hintlà phép OR logic của các cờ được liệt kê trong Hint flags (ngoại trừimage.BLACK_BACKGROUNDkhông được hỗ trợ ở đây).transformlàndarray3x3 đượ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.copynế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_fbnếu True thì ảnh được tải trực tiếp vào bộ đệm khung hình.copy_to_fbcó ưu tiên hơncopy. Đ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_scalekiể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ếuy_scalekhông được chỉ định thì nó sẽ khớp vớix_scaleđể duy trì tỷ lệ khung hình.y_scalekiể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ếux_scalekhông được chỉ định thì nó sẽ khớp vớix_scaleđể duy trì tỷ lệ khung hình.roilà 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_channellà 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ềnrgb_channel=1thì 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.alphakiể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_palettenếu không phảiNonecó 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ấtrgb_channelnếu được sử dụng.alpha_palettenếu không phảiNonecó 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ịalphacủ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ấtrgb_channelnếu được sử dụng.hintlà phép OR logic của các cờ được liệt kê trong Hint flags (ngoại trừimage.BLACK_BACKGROUNDkhông được hỗ trợ ở đây).transformlàndarray3x3 đượ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.copynế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_fbnếu True thì ảnh được tải trực tiếp vào bộ đệm khung hình.copy_to_fbcó ưu tiên hơncopy. Đ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_scalekiể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ếuy_scalekhông được chỉ định thì nó sẽ khớp vớix_scaleđể duy trì tỷ lệ khung hình.y_scalekiể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ếux_scalekhông được chỉ định thì nó sẽ khớp vớix_scaleđể duy trì tỷ lệ khung hình.roilà 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_channellà 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ềnrgb_channel=1thì 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.alphakiể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_palettenếu không phảiNonecó thể làimage.PALETTE_DEPTHhoặ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ấtrgb_channelnếu được sử dụng.alpha_palettenếu không phảiNonecó 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ịalphacủ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ấtrgb_channelnếu được sử dụng.hintlà phép OR logic của các cờ được liệt kê trong Hint flags (ngoại trừimage.BLACK_BACKGROUNDkhông được hỗ trợ ở đây).transformlàndarray3x3 đượ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.copynế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_fbnếu True thì ảnh được tải trực tiếp vào bộ đệm khung hình.copy_to_fbcó ưu tiên hơncopy. Đ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_scalekiể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ếuy_scalekhông được chỉ định thì nó sẽ khớp vớix_scaleđể duy trì tỷ lệ khung hình.y_scalekiể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ếux_scalekhông được chỉ định thì nó sẽ khớp vớix_scaleđể duy trì tỷ lệ khung hình.roilà 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_channellà 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ềnrgb_channel=1thì 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.alphakiể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_palettenếu không phảiNonecó 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ấtrgb_channelnếu được sử dụng.alpha_palettenếu không phảiNonecó 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ịalphacủ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ấtrgb_channelnếu được sử dụng.hintlà phép OR logic của các cờ được liệt kê trong Hint flags (ngoại trừimage.BLACK_BACKGROUNDkhông được hỗ trợ ở đây).transformlàndarray3x3 đượ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.copynế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_fbnếu True thì ảnh được tải trực tiếp vào bộ đệm khung hình.copy_to_fbcó ưu tiên hơncopy. Đ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_scalekiể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ếuy_scalekhông được chỉ định thì nó sẽ khớp vớix_scaleđể duy trì tỷ lệ khung hình.y_scalekiể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ếux_scalekhông được chỉ định thì nó sẽ khớp vớix_scaleđể duy trì tỷ lệ khung hình.roilà 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_channellà 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ềnrgb_channel=1thì 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.alphakiể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_palettenếu không phảiNonecó 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ấtrgb_channelnếu được sử dụng.alpha_palettenếu không phảiNonecó 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ịalphacủ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ấtrgb_channelnếu được sử dụng.hintlà phép OR logic của các cờ được liệt kê trong Hint flags (ngoại trừimage.BLACK_BACKGROUNDkhông được hỗ trợ ở đây).transformlàndarray3x3 đượ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.copynế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_fbnếu True thì ảnh được tải trực tiếp vào bộ đệm khung hình.copy_to_fbcó ưu tiên hơncopy. Đ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_scalekiể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ếuy_scalekhông được chỉ định thì nó sẽ khớp vớix_scaleđể duy trì tỷ lệ khung hình.y_scalekiể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ếux_scalekhông được chỉ định thì nó sẽ khớp vớix_scaleđể duy trì tỷ lệ khung hình.roilà 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_channellà 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ềnrgb_channel=1thì 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.alphakiể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_palettenếu không phảiNonecó 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ấtrgb_channelnếu được sử dụng.alpha_palettenếu không phảiNonecó 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ịalphacủ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ấtrgb_channelnếu được sử dụng.hintlà phép OR logic của các cờ được liệt kê trong Hint flags (ngoại trừimage.BLACK_BACKGROUNDkhông được hỗ trợ ở đây).transformlàndarray3x3 đượ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.copynế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_fbnếu True thì ảnh được tải trực tiếp vào bộ đệm khung hình.copy_to_fbcó ưu tiên hơncopy. Điều này không có hiệu ứng đặc biệt nếu ảnh đã ở trong bộ đệm khung hình.qualitykiểm soát chất lượng nén ảnh jpeg. Giá trị có thể từ 0 đến 100.subsamplingcó thể là:image.JPEG_SUBSAMPLING_AUTO: Sử dụng subsampling tốt nhất cho ảnh dựa trên chất lượng.image.JPEG_SUBSAMPLING_444: Sử dụng subsampling 4:4:4.image.JPEG_SUBSAMPLING_422: Sử dụng subsampling 4:2:2.image.JPEG_SUBSAMPLING_420: Sử dụng subsampling 4:2:0.
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_scalekiể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ếuy_scalekhông được chỉ định thì nó sẽ khớp vớix_scaleđể duy trì tỷ lệ khung hình.y_scalekiể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ếux_scalekhông được chỉ định thì nó sẽ khớp vớix_scaleđể duy trì tỷ lệ khung hình.roilà 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_channellà 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ềnrgb_channel=1thì 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.alphakiể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_palettenếu không phảiNonecó 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ấtrgb_channelnếu được sử dụng.alpha_palettenếu không phảiNonecó 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ịalphacủ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ấtrgb_channelnếu được sử dụng.hintlà phép OR logic của các cờ được liệt kê trong Hint flags (ngoại trừimage.BLACK_BACKGROUNDkhông được hỗ trợ ở đây).transformlàndarray3x3 đượ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.copynế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_fbnếu True thì ảnh được tải trực tiếp vào bộ đệm khung hình.copy_to_fbcó ưu tiên hơncopy. Đ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_scalekiể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ếuy_scalekhông được chỉ định thì nó sẽ khớp vớix_scaleđể duy trì tỷ lệ khung hình.y_scalekiể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ếux_scalekhông được chỉ định thì nó sẽ khớp vớix_scaleđể duy trì tỷ lệ khung hình.roilà 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_channellà 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ềnrgb_channel=1thì 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.alphakiể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_palettenếu không phảiNonecó 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ấtrgb_channelnếu được sử dụng.alpha_palettenếu không phảiNonecó 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ịalphacủ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ấtrgb_channelnếu được sử dụng.hintlà phép OR logic của các cờ được liệt kê trong Hint flags (ngoại trừimage.BLACK_BACKGROUNDkhông được hỗ trợ ở đây).transformlàndarray3x3 đượ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.copynế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_fbnếu True thì ảnh được tải trực tiếp vào bộ đệm khung hình.copy_to_fbcó ưu tiên hơncopy. Điều này không có hiệu ứng đặc biệt nếu ảnh đã ở trong bộ đệm khung hình.qualitykiểm soát chất lượng nén ảnh jpeg. Giá trị có thể từ 0 đến 100.subsamplingcó thể là:image.JPEG_SUBSAMPLING_AUTO: Sử dụng subsampling tốt nhất cho ảnh dựa trên chất lượng.image.JPEG_SUBSAMPLING_444: Sử dụng subsampling 4:4:4.image.JPEG_SUBSAMPLING_422: Sử dụng subsampling 4:2:2.image.JPEG_SUBSAMPLING_420: Sử dụng subsampling 4:2:0.
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.compresslà bí danh choImage.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_scalekiể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ếuy_scalekhông được chỉ định thì nó sẽ khớp vớix_scaleđể duy trì tỷ lệ khung hình.y_scalekiể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ếux_scalekhông được chỉ định thì nó sẽ khớp vớix_scaleđể duy trì tỷ lệ khung hình.roilà 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_channellà 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ềnrgb_channel=1thì 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.alphakiể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_palettenếu không phảiNonecó 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ấtrgb_channelnếu được sử dụng.alpha_palettenếu không phảiNonecó 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ịalphacủ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ấtrgb_channelnếu được sử dụng.hintlà phép OR logic của các cờ được liệt kê trong Hint flags (ngoại trừimage.BLACK_BACKGROUNDkhông được hỗ trợ ở đây).transformlàndarray3x3 đượ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_fbnế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_scalekiể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ếuy_scalekhông được chỉ định thì nó sẽ khớp vớix_scaleđể duy trì tỷ lệ khung hình.y_scalekiể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ếux_scalekhông được chỉ định thì nó sẽ khớp vớix_scaleđể duy trì tỷ lệ khung hình.roilà 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_channellà 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ềnrgb_channel=1thì 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.alphakiể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_palettenếu không phảiNonecó 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ấtrgb_channelnếu được sử dụng.alpha_palettenếu không phảiNonecó 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ịalphacủ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ấtrgb_channelnếu được sử dụng.hintlà phép OR logic của các cờ được liệt kê trong Hint flags (ngoại trừimage.BLACK_BACKGROUNDkhông được hỗ trợ ở đây).transformlàndarray3x3 đượ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.copynế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_fbnếu True thì ảnh được tải trực tiếp vào bộ đệm khung hình.copy_to_fbcó ưu tiên hơncopy. Đ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_scalekiể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ếuy_scalekhông được chỉ định thì nó sẽ khớp vớix_scaleđể duy trì tỷ lệ khung hình.y_scalekiể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ếux_scalekhông được chỉ định thì nó sẽ khớp vớix_scaleđể duy trì tỷ lệ khung hình.roilà 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_channellà 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ềnrgb_channel=1thì 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.alphakiể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_palettenếu không phảiNonecó 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ấtrgb_channelnếu được sử dụng.alpha_palettenếu không phảiNonecó 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ịalphacủ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ấtrgb_channelnếu được sử dụng.hintlà phép OR logic của các cờ được liệt kê trong Hint flags (ngoại trừimage.BLACK_BACKGROUNDkhông được hỗ trợ ở đây).transformlàndarray3x3 đượ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.copynế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_fbnếu True thì ảnh được tải trực tiếp vào bộ đệm khung hình.copy_to_fbcó ưu tiên hơncopy. Đ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.scalelà bí danh choImage.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.
roilà 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.qualitylà 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
..
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).
masklà ả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).
colorlà 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.thicknesskiể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).
colorlà 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.thicknesskiểm soát độ dày của các cạnh tính bằng điểm ảnh.Truyền
filllà 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).
colorlà 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.thicknesskiểm soát độ dày của các cạnh tính bằng điểm ảnh.Truyền
filllà 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).
colorlà 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.thicknesskiểm soát độ dày của các cạnh tính bằng điểm ảnh.Truyền
filllà 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).
textlà chuỗi để ghi vào ảnh. Các ký tự xuống dòng\n,\r, và\r\ndi chuyển con trỏ đến dòng tiếp theo.colorlà 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.scalecó 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_spacingcho 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_spacingcho 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_spacemặ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_rotationcó thể là 0, 90, 180, 270 để xoay từng ký tự trong chuỗi theo lượng này.char_hmirrornếu True thì lật theo chiều ngang tất cả các ký tự trong chuỗi.char_vflipnếu True thì lật theo chiều dọc tất cả các ký tự trong chuỗi.string_rotationcó thể là 0, 90, 180, 270 để xoay chuỗi theo lượng này.string_hmirrornếu True thì lật theo chiều ngang chuỗi.string_vflipnế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).
colorlà 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.sizekiểm soát độ dài của các đường của dấu thập.thicknesskiể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).
colorlà 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.thicknesskiể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.
detectionlà 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).color1là màu sắc hình chữ nhật vàcolor2là màu sắc dấu thập tâm điểm.sizelà kích thước dấu thập tâm điểm,thicknesskiểm soát độ rộng đường viền, vàfilltô đầy hình chữ nhật.labelnếu được cung cấp sẽ được vẽ gần hình chữ nhật, được dịch chuyển theolabel_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)].colorlà 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.sizenế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ínhsize.thicknesskiểm soát độ dày của đường thẳng tính bằng điểm ảnh.Truyền
filllà 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
imagecó 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_scalekiể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ếuy_scalekhông được chỉ định thì nó sẽ khớp vớix_scaleđể duy trì tỷ lệ khung hình.y_scalekiể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ếux_scalekhông được chỉ định thì nó sẽ khớp vớix_scaleđể duy trì tỷ lệ khung hình.roilà 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_channellà 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ềnrgb_channel=1thì 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.alphakiể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_palettenếu không phảiNonecó 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ấtrgb_channelnếu được sử dụng.alpha_palettenếu không phảiNonecó 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ịalphacủ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ấtrgb_channelnếu được sử dụng.hintlà phép OR logic của các cờ được liệt kê trong Hint flags (bao gồmimage.BLACK_BACKGROUNDđược hỗ trợ ở đây).transformlàndarray3x3 đượ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ể.
colorlà 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.sizekiểm soát kích thước của các điểm đặc trưng.thicknesskiểm soát độ dày của đường thẳng tính bằng điểm ảnh.Truyền
filllà 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_thresholdkiể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_thresholdkiể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.colorlà 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
invertlà 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_backgroundlà True để zero các điểm ảnh còn lại mà flood-fill không tô màu lại.masklà ả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ộtImageđể 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àngcsi.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.clearnếu True thì đặt lại bộ đệm ảnh vềbrightnesstrướ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).brightnesskiểm soát đường cơ sở xám trung bình mà bộ đệm được đặt lại khiclearlà 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.contrastkiể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
thresholdshay không.thresholdslà 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.zeronế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.masklà ả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_bitmapnế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ầucopy=True.copynế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 - pixelcho 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.
imagecó 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).masklà ả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.
imagecó 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).masklà ả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.
imagecó 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).masklà ả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.
imagecó 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).masklà ả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.
imagecó 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).masklà ả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.
imagecó 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).masklà ả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.
maxnế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ụngpow(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ụngpixel * contrastsau khi chuẩn hóa.brightnessáp dụngpixel + brightnesssau 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.
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ằngimage(hoặc biến đổi ảnh này tại chỗ nếuimagebị bỏ qua) sử dụng các đối số từ khóa chuẩn củadraw_image. Đối sốtransformlàndarray3x3 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.
imagecó 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).masklà ả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ừ
imagekhỏi ảnh này theo từng điểm ảnh (self - image).imagecó 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).masklà ả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 - selftheo từng điểm ảnh. Ngoài ra giống hệt vớiImage.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.
imagecó 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).masklà ả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.
imagecó 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).masklà ả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||).
imagecó 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).masklà ả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 alphaimagevào ảnh này.alphalà 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ủaImage.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.
adaptivenế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_limitgiớ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).masklà ả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ơnthresholdđiểm ảnh lân cận bị xóa (hoạt động như erode chuẩn nếuthresholdlà None).masklà ả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ơnthresholdđiểm ảnh lân cận được đặt (hoạt động như dilate chuẩn nếuthresholdlà None).masklà ả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()vàImage.dilate().masklà ả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()vàImage.erode().masklà ả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().masklà ả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().masklà ả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.
sizelà kích thước nhân. Dùng 1 (nhân 3x3), 2 (nhân 5x5), v.v.thresholdnếu True, thích nghi phân ngưỡng đầu ra bộ lọc thành ảnh nhị phân.offsetdị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.masklà ả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).
sizelà kích thước nhân. Dùng 1 (nhân 3x3), 2 (nhân 5x5), v.v.percentilelà phần vị để chọn từ mỗi nhân (0 = min, 0.5 = median, 1.0 = max). Mặc định là 0.5.thresholdnếu True, thích nghi phân ngưỡng đầu ra bộ lọc thành ảnh nhị phân.offsetdị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.masklà ả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.
sizelà kích thước nhân. Dùng 1 (nhân 3x3), 2 (nhân 5x5), v.v.thresholdnếu True, thích nghi phân ngưỡng đầu ra bộ lọc thành ảnh nhị phân.offsetdị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.masklà ả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.
sizelà kích thước nhân. Dùng 1 (nhân 3x3), 2 (nhân 5x5), v.v.biaskiể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ụngbiasbạn có thể lọc min/max trên ảnh.thresholdnếu True, thích nghi phân ngưỡng đầu ra bộ lọc thành ảnh nhị phân.offsetdị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.masklà ả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 ý.
sizekiểm soát kích thước nhân, phải là((size*2)+1)x((size*2)+1)phần tử.kernellà 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ử.mullà tỷ lệ độ tương phản nhân (mặc định 1.0).addlà độ lệch độ sáng cộng (mặc định 0.0).thresholdnếu True, thích nghi phân ngưỡng đầu ra bộ lọc thành ảnh nhị phân.offsetdị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.masklà ả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ờ.
sizelà kích thước nhân. Dùng 1 (nhân 3x3), 2 (nhân 5x5), v.v.unsharpnế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.mullà tỷ lệ độ tương phản nhân (mặc định 1.0).addlà độ lệch độ sáng cộng (mặc định 0.0).thresholdnếu True, thích nghi phân ngưỡng đầu ra bộ lọc thành ảnh nhị phân.offsetdị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.masklà ả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.
sizelà kích thước nhân. Dùng 1 (nhân 3x3), 2 (nhân 5x5), v.v.sharpennế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.mullà tỷ lệ độ tương phản nhân (mặc định 1.0).addlà độ lệch độ sáng cộng (mặc định 0.0).thresholdnếu True, thích nghi phân ngưỡng đầu ra bộ lọc thành ảnh nhị phân.offsetdị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.masklà ả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).
sizelà kích thước nhân. Dùng 1 (nhân 3x3), 2 (nhân 5x5), v.v.color_sigmakiể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_sigmakiể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.thresholdnếu True, thích nghi phân ngưỡng đầu ra bộ lọc thành ảnh nhị phân.offsetdị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.masklà ả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.xvàychỉ định tọa độ trung tâm của phép biến đổi tính bằng điểm ảnh. NếuxlàNone(mặc định) thì nó được đặt bằng một nửa chiều rộng ảnh; tương tựymặ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.xvàychỉ định tọa độ trung tâm của phép biến đổi tính bằng điểm ảnh. NếuxlàNone(mặc định) thì nó được đặt bằng một nửa chiều rộng ảnh; tương tựymặ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.
strengthlà 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.zoomlà lượng phóng to ảnh. Mặc định là 1.0.x_corrlà độ lệch điểm ảnh dấu phẩy động từ trung tâm. Có thể âm hoặc dương.y_corrlà độ 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_rotationlà 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_rotationlà 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_rotationlà 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_translationlà 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_translationlà 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...zoomlà lượng phóng to ảnh. Mặc định là 1.0.fovlà trường nhìn được sử dụng cho phép chiếu nội bộ 2D->3D. Khifovtiến đến 0 thì ảnh được đặt ở vô cực; khi tiến đến 180 thì ảnh được đặt trong viewport.cornerslà 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.imagelà ả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àtransformchấp nhận các giá trị giống nhưImage.draw_image().dssimnế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
roivà trả về đối tượngimage.histogram. Cũng khả dụng nhưImage.get_hist()hoặcImage.histogram().thresholdslà 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.roilà 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ặcl_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.differencecó 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
roivà trả về đối tượngimage.statistics. Cũng khả dụng nhưImage.get_stats()hoặcImage.statistics().thresholdslà 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.roilà 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ặcl_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.differencecó 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.thresholdslà 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.roilà 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_stridevày_stridekiểm soát số điểm ảnh bị bỏ qua trong khi đánh giá ảnh.area_thresholddiệ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_thresholdsố 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_sizelà 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.thresholdslà 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.roilà 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_stridevày_stridekiể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_thresholddiệ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_thresholdsố 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.mergenế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.marginphó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 bitcodecủ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_maxnế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_maxnế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.roilà 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_stridevày_stridekiể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_marginvàrho_marginkiể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.roilà 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_distancelà khoảng cách điểm ảnh tối đa giữa hai đoạn thẳng để được hợp nhất.max_theta_differencelà 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.roilà 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_stridevày_stridekiể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_marginkiể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_minbán kính hình tròn tối thiểu. Mặc định là 2.r_maxbán kính hình tròn tối đa. Mặc định làmin(roi.w/2, roi.h/2).r_stepkí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.roilà 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
roivà trả về danh sách các đối tượngimage.qrcode.roilà 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
roivà trả về danh sách các đối tượngimage.apriltag.roilà 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.familieslà 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.fxvàfylà tiêu cự camera X và Y tính bằng điểm ảnh.cxvàcylà tâm ảnh, thường làimage.width()/2vàimage.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
roivà trả về danh sách các đối tượngimage.datamatrix.roilà 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.effortkiể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
roivà trả về danh sách các đối tượngimage.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.roilà 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
templatesử dụng tương quan pha. Trả về đối tượngimage.displacement.roilà 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_roilà vùng quan tâm của template. Mặc định là hình chữ nhật ảnh template.roivàtemplate_roiphải có cùng chiều rộng và chiều cao.logpolarnếu True trả về thay đổi xoay/tỷ lệ thay vì dịch chuyển x/y.fix_rotation_scalenếu True, tính toán độ dịch chuyển sau khi căn chỉnh xoay và tỷ lệ (chỉ có ý nghĩa khilogpolar=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à
templatekhớ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.templatelà ảnh thang xám để khớp với ảnh này.thresholdlà 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.roilà 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.steplà số điểm ảnh bỏ qua trong khi tìm kiếm (chỉ được sử dụng trong chế độimage.SEARCH_EX).searchlàimage.SEARCH_DS(tìm kiếm kim cương nhanh hơn) hoặcimage.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.
cascadelà đối tượng Haar Cascade (xemimage.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ả.scalephả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.roilà 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.
roilà 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ả.roilà 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.roilà 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.normalizednếu True, tắt trích xuất điểm đặc trưng đa độ phân giải.scale_factorphả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_keypointslà số lượng điểm đặc trưng tối đa để giữ lại.corner_detectorlàimage.CORNER_FASThoặcimage.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.
thresholdlà 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).
roilà 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 trongroimớ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.
reversedTheo 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_disparitylà 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.thresholdnế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.
- selective_search(threshold: int = 500, size: int = 20, a1: float = 1.0, a2: float = 1.0, a3: float = 1.0) List[Tuple[int, int, int, int]]¶
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.
thresholdlà ngưỡng phân vùng; giá trị cao hơn tạo ra ít vùng hơn/lớn hơn.sizelà kích thước vùng tối thiểu sau khi hợp nhất.a1,a2,a3là 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.