v4.5.1

v4.5.1 bổ sung các gợi ý vẽ hướng/tỷ lệ ảnh, tải ảnh trực tiếp từ đường dẫn file, một ioctl trường nhìn rộng GC2145, và API điều khiển đèn nền mới. Phiên bản này cũng cải tổ constructor Image(), các API display, và phân tích cú pháp đối số module — hãy đọc các thay đổi phá vỡ tương thích bên dưới.

Điểm nổi bật

  • Gợi ý vẽdraw_image() được bổ sung gợi ý hướng (HMIRROR/VFLIP/TRANSPOSE, ROTATE_90/180/270) và thu phóng theo tỷ lệ (SCALE_ASPECT_KEEP/EXPAND/IGNORE).

  • Tải ảnh từ đĩadraw_image() / display.write() chấp nhận chuỗi đường dẫn file.

  • Điều khiển đèn nền — các lớp DACBacklight / PWMBacklight mới và đối số backlight= cho màn hình.

  • Thay đổi phá vỡ tương thích: constructor Image(), các API display, và phân tích cú pháp đối số module đã thay đổi — xem các thay đổi phá vỡ tương thích.

Tính năng mới

  • Gợi ý hướng draw_image()image.HMIRROR, image.VFLIP, image.TRANSPOSE, cộng với tiện ích image.ROTATE_90 / ROTATE_180 / ROTATE_270.

  • Gợi ý tỷ lệ draw_image()image.SCALE_ASPECT_KEEP / SCALE_ASPECT_EXPAND / SCALE_ASPECT_IGNORE cho vừa khít / mở rộng / kéo giãn.

  • Hằng số paletteimage.PALETTE_RAINBOWimage.PALETTE_IRONBOW (chuyển vào module ảnh).

  • Trường nhìn rộng — các ioctl sensor.IOCTL_SET_FOV_WIDE / IOCTL_GET_FOV_WIDE mới (trên GC2145, lên đến 5x thu phóng cảm biến).

  • Tải từ đĩadraw_image()display.write() chấp nhận chuỗi đường dẫn file ảnh nguồn, tải trực tiếp từ bộ nhớ.

  • Bộ điều khiển đèn nền — các lớp DACBacklightPWMBacklight mới (có thể import từ display), và đối số chỉ từ khóa backlight= trên các constructor màn hình SPI/parallel.

Các thay đổi và cải tiến khác

  • Driver màn hình DSI ST7701 đã chuyển vào module st7701.py riêng (vẫn có thể import qua from display import *) và được đóng băng trên Arduino Giga; driver IMU lsm9ds1 được đóng băng trên Arduino Nano 33 BLE Sense.

  • Camera MT9V022 / MT9V034 (màn trập toàn cầu) giờ áp dụng hiệu chỉnh nhiễu hàng để cải thiện chất lượng ảnh.

  • Volume lưu trữ USB mass-storage i.MX RT giờ được gán nhãn là đĩa OpenMV.

Sửa lỗi

Camera và cảm biến:

  • Đã sửa phát hiện góc (find_keypoints() FAST/AGAST) trên ảnh cao hơn 480 hàng — bộ đệm mỗi hàng giờ được định kích thước theo chiều cao ảnh.

  • Đã thêm hỗ trợ chân FSYNC để snapshot() đồng bộ khung hình trên i.MX RT (OpenMV RT1060), và sửa chân MOSI/MISO SPI4 bị hoán đổi trên RT1060.

Màn hình và video:

  • Đã sửa thứ tự đối số constructor SPIDisplay (bgr, byte_swap, triple_buffer được áp dụng sai tham số).

  • Đã sửa lỗi hỏng ảnh TV-shield khi vẽ ảnh với hình chữ nhật được chỉ định, và giới hạn khung hình MJPEG không đúng khi ghi các khung hình được thu phóng.

Mạng:

  • Chế độ AP WiFi WINC không còn bắt buộc hạn chế WEP lỗi thời — các chế độ AP mở và WPA hoạt động với xử lý PSK đúng.

Phần cứng và hỗ trợ bo mạch

  • OpenMV RT1060 — chân FSYNC và các chân SPI4 được sửa.

  • Arduino GIGA — giải pháp độ tin cậy QSPI; màn hình ST7701 được đóng băng vào.

  • Arduino Nano 33 BLE Sense — driver IMU lsm9ds1 được đóng băng vào.

Thay đổi API phá vỡ tương thích

Các thay đổi API hiển thị với người dùng giữa v4.5.0 và v4.5.1. Phạm vi: C-module Python trong modules/ và thư viện Python trong scripts/libraries/.

Mỗi thay đổi được gắn nhãn mức độ ảnh hưởng:

  • nhỏ — API hẹp; chỉ ảnh hưởng đến các tập lệnh đã sử dụng nó.

  • hành vi — cùng API, kết quả khác; cần kiểm tra lại các tập lệnh đã tinh chỉnh.

Các thay đổi được nhóm theo mức độ ảnh hưởng theo thứ tự đó. Nếu bạn chỉ muốn chuyển đổi code, hãy chuyển đến danh sách kiểm tra chuyển đổi ở cuối. Mỗi mã hash commit liên kết đến diff của nó trên GitHub.

Constructor Image() và các API display (nhỏ)

Constructor image.Image đã được cải tổ sang đối số từ khóa (height, pixformat, buffer=, copy_to_fb=); giờ có thể xây dựng ảnh từ bytearray/buffer hiện có, và buffer là bắt buộc cho các định dạng nén. display.write() đã được cải tổ: x_scale/y_scale giờ nhận float (tỷ lệ thu phóng) hoặc int (kích thước đích tính bằng điểm ảnh) và các từ khóa riêng biệt x_size/y_size đã bị xóa. Đối số vị trí đầu tiên của WINC.connect() được đổi tên essidssid, và kết quả quét WiFi WINC thay đổi thành (ssid_bytes, bssid_bytes, channel, rssi, security, N) (SSID/BSSID giờ là bytes; BSSID không còn là chuỗi MAC có định dạng).

Commits: 6752c95ac, 161737092, 8178c237c, b6cdf8de1

Phạm vi đèn nền, thu phóng, và đối số chỉ từ khóa (hành vi)

Display.backlight() giờ nhận cường độ 0–100 (0 = tắt, 100 = tối đa) thay vì 0–255, ném ValueError khi ngoài phạm vi. Giá trị nguyên x_scale/y_scale giờ được coi là hệ số thu phóng nhân (giống float) thay vì kích thước điểm ảnh đích — điều này ảnh hưởng đến fir.snapshot()/draw_ir(), tof.snapshot()/draw_depth(), display, và thu phóng tv. Phân tích cú pháp đối số trên các module sensor, fir, tof, tv, mjpeg, gif, imageio, tf, và audio đã được thống nhất, làm cho một số tùy chọn trước đây là vị trí trở thành chỉ từ khóa (tên, giá trị mặc định, và hành vi không thay đổi).

Commits: 391ec443f, 8bd25d6cd, 477312656, 08bf62a32, a4c0f20bf, 9b411a66d, 3d679f5a6, d15fc6b8d, 555e67ecd

Danh sách kiểm tra chuyển đổi

Để chuyển đổi sạch sang v4.5.1, công việc thông thường là:

  1. Cập nhật cấu trúc Image() sang dạng từ khóa mới, chuyển display.write() khỏi x_size/y_size, và đổi tên WINC.connect() essidssid (xử lý các tuple quét dựa trên bytes mới) (thay đổi constructor/display/WINC).

  2. Điều chỉnh lại các lời gọi Display.backlight() về 0–100, kiểm tra lại bất kỳ cách dùng nguyên x_scale/y_scale nào, và truyền các tùy chọn module trước đây là vị trí dưới dạng từ khóa (thay đổi hành vi).