v3.9.0¶
v3.9.0 là bản phát hành lớn. Nó bổ sung cổng nRF với Arduino Nano 33 BLE Sense (camera, mô-đun audio PDM, ulab, driver cảm biến đóng băng), mang lại hỗ trợ cảm biến nhiệt FLIR Lepton cùng MLX90641 / MLX90621 và mô-đun fir được cải tiến hoàn toàn, ioctls tự động lấy nét OV5640, và kiểu streaming mới image.ImageIO. Mô-đun CMSIS-NN nn cũ và các class ImageReader / ImageWriter đã bị xóa — hãy đọc phần thay đổi không tương thích bên dưới.
Điểm nổi bật¶
Arduino Nano 33 BLE Sense — cổng nRF52840 mới với camera, mô-đun
audioPDM,ulabvà driver cảm biến đóng băng.Nhiệt — hỗ trợ FLIR Lepton, MLX90641 và MLX90621 với mô-đun
firđược cải tiến (bảng màu, phản chiếu, chia tỷ lệ, đo phóng xạ, FFC).Tự động lấy nét OV5640 — các ioctls
sensor.IOCTL_*_AUTO_FOCUSmới.image.ImageIO— kiểu luồng ảnh thống nhất (bộ nhớ hoặc tệp; đọc/ghi/tìm kiếm/kích thước/đóng) thay thế choImageReader/ImageWriter.Thay đổi không tương thích: mô-đun CMSIS-NN
nnvàimage.ImageReader/image.ImageWriterđã bị xóa, và hành vi củafind_lines()/firđã thay đổi — xem phần thay đổi không tương thích.
Tính năng mới¶
Cổng nRF / Arduino Nano 33 BLE Sense — cổng nRF52840 mới và hỗ trợ bo mạch, với mô-đun
audiomới (audio.init(),audio.start_streaming(),audio.stop_streaming()), bậtulab, và driver cảm biếnapds9960/lps22h/lsm9ds1/hts221đóng băng.image.ImageIO— kiểu luồng ảnh mới hỗ trợ cả luồng bộ nhớ và tệp vớiread()/write()/seek()/size()/close(), cùng các ví dụ đọc/ghi/bộ nhớ ImageIO.FLIR Lepton — đã thêm hỗ trợ
FIR_LEPTONvớifir.radiometric(),fir.trigger_ffc()vàfir.register_vsync_cb().Cảm biến nhiệt — đã thêm hỗ trợ MLX90641 (
FIR_MLX90641) và thermopile MLX90621 (driver Melexis chính thức).Bảng màu / hướng
fir— đã thêm các hằng sốfir.PALETTE_RAINBOW/PALETTE_IRONBOW/GRAYSCALE/RGB565, vàfir.read_ir()giờ chấp nhậnhmirror/vflip/transpose.Tự động lấy nét OV5640 — đã thêm
sensor.IOCTL_TRIGGER_AUTO_FOCUS/IOCTL_PAUSE_AUTO_FOCUS/IOCTL_RESET_AUTO_FOCUS/IOCTL_WAIT_ON_AUTO_FOCUS(OpenMV 2/3/4/4 Plus/PT/Portenta).Đã tổ chức lại các ví dụ Arduino vào các thư mục theo bo mạch.
Các thay đổi và cải tiến khác¶
Chuyển sang thông báo lỗi MicroPython nén (chuỗi ngoại lệ ngắn hơn); tham số
typecủafir.init()giờ tự phát hiện qua quét bus I2C khi bỏ qua; ngoại lệxallocgiờ báo cáo số byte được yêu cầu; UART 8 đã được bật trên Portenta; các ví dụ FIR đã được hợp nhất thànhthermal_camera.py/thermal_overlay.py/thermal_overlay_lcd.py. Để vừa flash,image.get_similarity()và tìm kiếm có chọn lọc đã bị vô hiệu hóa trong bản OpenMV 4, và thư viện ảnh giờ có thể được xây dựng mà không cần filesystem (cho các bo mạch không có filesystem).
Sửa lỗi¶
Camera và cảm biến:
Đã sửa tính toán PCLK OV5640, thêm các xử lý IRQ I2C bị thiếu (sửa treo chuyển giao I2C), cải tiến đọc/ghi I2C cambus để tăng độ tin cậy, làm cho bus I2C Lepton có thể chọn được, chuyển các chân khôi phục bus cambus sang cấu hình theo bo mạch, thử lại quét cambus một lần trước khi thất bại, và làm cho OpenMV PT (Lepton + camera dùng chung I2C) hoạt động.
Nhiệt:
Đã sửa tính toán giá trị lớn nhất trong
get_ir()/draw_ir()vàimage.get_similarity()củafir(FLT_MIN→-FLT_MAX), xử lý 12→16-bit AMG8833, và độ chính xác MLX90621 (driver Melexis chính thức).
Màn hình, âm thanh và hệ thống:
Đã chuyển các chuyển giao SPI LCD STM32 sang callbacks HAL SPI (độ tin cậy màn hình), sửa
audio.init()Nano 33 (bộ dao động HF + tỷ lệ PDM để microphone hoạt động), trạng thái bộ định thời H7 với HAL mới,gc_collectnRF và khởi tạo/deinit bo mạch sớm, và ngừng in thông báo nhiễu "uh oh, no preference for overlapping detection" trong quá trìnhfind_apriltags()/find_rects().
Phần cứng và hỗ trợ bo mạch¶
Arduino Nano 33 BLE Sense — bo mạch nRF52840 mới (camera, audio PDM,
ulab, driver cảm biến đóng băng).Cảm biến nhiệt FLIR Lepton, MLX90641 và MLX90621.
Tự động lấy nét OV5640 — OpenMV 2/3/4/4 Plus/PT/Portenta.
Portenta — UART 8 đã được bật.
Thay đổi API không tương thích¶
Các thay đổi API hiển thị với người dùng giữa v3.8.0 và v3.9.0. Phạm vi: các C-module Python trong modules/ và thư viện Python trong scripts/libraries/.
Mỗi thay đổi được gắn thẻ theo mức độ ảnh hưởng:
lớn — ảnh hưởng đến hầu hết các tập lệnh đã sử dụng tính năng; bạn sẽ cần chuyển đổi code.
nhỏ — API hẹp; chỉ ảnh hưởng đến tập lệnh đã sử dụng nó.
hành vi — cùng API, kết quả khác; hãy 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 di chuyển ở cuối trang. Mỗi mã băm commit liên kết đến diff trên GitHub.
Mô-đun CMSIS-NN nn đã bị xóa (lớn)¶
Mô-đun CMSIS-NN nn đã bị xóa, bao gồm nn.load(), net.forward(), net.search() và trợ giúp nn_class. Suy luận mô hình (ML) chuyển sang mô-đun TensorFlow Lite (tf). Các tập lệnh tải mô hình .network bằng nn phải được chuyển đổi sang tf với mô hình TensorFlow Lite.
Commits: fbc767b36
ImageReader / ImageWriter được thay thế bởi image.ImageIO (lớn)¶
image.ImageReader / image.ImageWriter và các phương thức next_frame() / add_frame() đã bị xóa và thay thế bằng kiểu image.ImageIO mới, hỗ trợ cả luồng bộ nhớ và tệp qua read() / write() / seek() / size() / close(). Code sử dụng các class reader/writer cũ phải được chuyển đổi sang image.ImageIO (xem các ví dụ đã đổi tên imageio_read.py / imageio_write.py).
Commits: 783a78754
Từ khóa scale của fir.draw_ir() đã bị xóa (nhỏ)¶
fir.draw_ir() đã được viết lại trên pipeline vẽ ảnh mới. Từ khóa scale=(min, max) đã bị xóa, và các đối số hint, x_scale, y_scale, roi và x/y offset theo vị trí đã được thêm vào. Các tập lệnh truyền scale=(min, max) vào fir.draw_ir() phải bỏ nó và dùng các đối số mới.
Commits: 0a29103b1
Xấp xỉ find_lines() (hành vi)¶
image.find_lines() giờ xấp xỉ độ lớn gradient là (abs(gx) + abs(gy)) / 2 và bỏ qua các độ lớn dưới 126. Điều này nhanh hơn nhưng thay đổi tập hợp các đường được phát hiện và giá trị bộ tích lũy, vì vậy hãy kiểm tra lại và điều chỉnh lại threshold / theta_margin / rho_margin.
Commits: 902ae3c98
fir.snapshot() được cải tiến (hành vi)¶
fir.snapshot() đã được cải tiến đáng kể với API từ khóa mới (hmirror, vflip, transpose, x_scale, y_scale, x_size, y_size, scale, rgb_channel, alpha, color_palette, hint, pixformat, copy_to_fb), và các ví dụ đi kèm đã được viết lại. Hành vi theo vị trí/chỉ pixformat trước đây đã thay đổi; hãy chuyển đổi các tập lệnh FIR sang dạng từ khóa mới (xem các ví dụ thermopile-shield đã cập nhật).
Commits: 53f2248b8
fir.init() gây ra ngoại lệ khi thất bại (hành vi)¶
fir.init() giờ gây ra ngoại lệ (và deinit sạch) khi cảm biến nhiệt không được phát hiện, thay vì tiếp tục âm thầm. Hãy bọc fir.init() trong try / except (hoặc đảm bảo cảm biến đã được kết nối) ở những nơi bạn trước đây dựa vào việc nó không gây ra ngoại lệ.
Commits: 4b2f972f3
Danh sách kiểm tra di chuyển¶
Để chuyển đổi sạch sang v3.9.0, công việc thông thường là:
Chuyển đổi suy luận mô hình (ML) CMSIS-NN
nnsang mô-đun TensorFlow Litetf(phần xóa nn).Thay thế
image.ImageReader/image.ImageWriterbằngimage.ImageIO(thay đổi ImageIO).Bỏ từ khóa
scale=(min, max)khỏifir.draw_ir()và dùng các đối số mới (thay đổi draw_ir).Điều chỉnh lại các tham số
find_lines()theo phương pháp đo độ lớn xấp xỉ (thay đổi find_lines).Chuyển đổi các tập lệnh FIR sang API từ khóa mới của
fir.snapshot()(thay đổi fir.snapshot) và xử lýfir.init()gây ra ngoại lệ khi thiếu cảm biến (thay đổi fir.init).
Tất cả các tập lệnh khác chạy không thay đổi.