v3.6.1¶
v3.6.1 là một phiên bản lớn. Nó giới thiệu module imu (LSM6DS3), một bộ API getter sensor mới với tự động xoay ảnh dựa trên IMU, hiệu chỉnh phối cảnh 4 điểm rotation_corr(), và hỗ trợ Arduino Portenta H7 với camera HIMAX HM01B0 và OV7690. Một số API sensor / image đã thay đổi và TensorFlow đã bị loại bỏ trên M7 — hãy đọc các thay đổi gây mất tương thích bên dưới.
Điểm nổi bật¶
Module
imu— gia tốc kế / con quay hồi chuyển / nhiệt độ / roll / pitch trên LSM6DS3 (OpenMV 4 / Portenta).Sensor getters + tự động xoay —
get_pixformat()/get_framesize()/get_hmirror()/get_vflip()/get_windowing(),set_transpose()/set_auto_rotation(), và tự động xoay ảnh chụp dựa trên IMU.Hiệu chỉnh phối cảnh —
rotation_corr()bổ sung từ khóafovvàcorners(4 điểm).Phần cứng mới — Arduino Portenta H7, HIMAX HM01B0, và camera OV7690.
Thay đổi gây mất tương thích:
set_pixformat()/set_framesize()bây giờ trả vềNone,sensor.set_framerate()đã bị xóa, TensorFlow bị loại bỏ trên M7, vàlens_corr()/linpolar()yêu cầu kích thước chẵn — xem các thay đổi gây mất tương thích.
Tính năng mới¶
imu— một module IMU mới:imu.acceleration_mg(),imu.angular_rate_mdps(),imu.temperature_c(),imu.roll(),imu.pitch(), vàimu.sleep()(LSM6DS3 trên OpenMV 4 / Portenta).Sensor getters — đã thêm
sensor.get_pixformat(),get_framesize(),get_hmirror(),get_vflip(),get_windowing(),set_transpose()/get_transpose(), vàset_auto_rotation()/get_auto_rotation().Tự động xoay —
sensor.snapshot()sử dụng IMU để lật / phản chiếu / chuyển vị khung hình khi tự động xoay được bật.rotation_corr()— đã thêm từ khóafovvàcorners(phối cảnh 4 điểm), kèm theo ví dụ hiệu chỉnh phối cảnh.lcd.init()— đã thêm tham số từ khóabgr.collections.deque— được kích hoạt trong bản dựng MicroPython.Đã thêm hằng số id
sensor.OV7690vàsensor.HM01B0cùng một ví dụ bộ lọc ảnhulabtheo phong cách numpy.
Các thay đổi và cải tiến khác¶
Tối ưu hóa đáng kể các bộ lọc ảnh (median / mode / mean / …) và
find_circles()cùng hiệu chỉnh ống kính;alloc_extra_fbgiờ có thể cấp phát số byte tùy ý; mô hình phát hiện người đã được xây dựng lại với op average-pool mới.
Sửa lỗi¶
Camera và cảm biến:
Đã sửa lỗi
sleep()của OV2640 (nay dùng thanh ghi standby COM2 thay vì chân power-down), cấu hình chân FSYNC, cực tính HSYNC/VSYNC và địa chỉ/quét I2C của HM01B0, GPIO power-down cảm biến Portenta và chân reset camera, và vô hiệu hóa tự động xoay khi góc pitch IMU gần 90°/270°.
Xử lý ảnh và hệ thống:
Đã sửa lỗi kiểm tra giới hạn bộ lọc ảnh, lỗi hardfault khi tắt D-cache, khởi động trên bo mạch không có thẻ SD, lỗi
load_to_fbcủatf.load(), lỗi tràn ngăn xếp khi phát hiện người (ngăn xếp H7 tăng lên ≥12 KB), và độ lệch descriptor USB ở chế độ tốc độ cao trên OpenMV 4 Plus.
Phần cứng và hỗ trợ bo mạch¶
Arduino Portenta H7 — khởi tạo bo mạch ban đầu (cấu hình clock/OSC/HSE STM32H747, header CMSIS, ADC, SDRAM, Arduino USB PID).
HIMAX HM01B0 — driver camera đơn sắc mới (Bayer, clock bộ dao động ngoài).
OV7690 — driver camera mới.
LSM6DS3 IMU — OpenMV 4 / Portenta.
Thay đổi API gây mất tương thích¶
Các thay đổi API hiển thị với người dùng giữa v3.6.0 và v3.6.1. 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 nhãn mức độ ảnh hưởng:
minor — API hẹp; chỉ ảnh hưởng đến các tập lệnh sử dụng nó.
behavior — 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 của mình, hãy chuyển đến danh sách kiểm tra di chuyển ở cuối. Mỗi hash commit liên kết đến diff của nó trên GitHub.
sensor.set_framerate() đã bị xóa (minor)¶
Stub no-op sensor.set_framerate() đã bị xóa; gọi nó bây giờ sẽ gây ra AttributeError. Hãy xóa lệnh gọi và kiểm soát thời gian khung hình thông qua framesize/exposure thay thế. (Hàm set_framerate() hoạt động được giới thiệu lại trong v4.0.2.)
Commits: 705e98f91
TensorFlow bị loại bỏ trên OpenMV Cam M7 (minor)¶
TensorFlow (module tf) đã bị vô hiệu hóa trên OpenMV Cam M7 / OpenMV 3 (nó không còn vừa nữa). import tf trên M7 sẽ thất bại — hãy dùng camera dòng H7 cho TensorFlow. (tf được kích hoạt lại trên F7 trong v3.6.3.)
Commits: 2ae875077
set_pixformat() / set_framesize() trả về None (behavior)¶
sensor.set_pixformat() và sensor.set_framesize() bây giờ trả về None thay vì True, và định dạng điểm ảnh không được hỗ trợ bây giờ sẽ gây ra ValueError thay vì assertion. Code kiểm tra giá trị trả về (ví dụ: if sensor.set_pixformat(...):) phải ngừng làm vậy, và code bắt AssertionError cho các định dạng không được hỗ trợ phải bắt ValueError.
Commits: f314ac4e7
lens_corr() / linpolar() / logpolar() yêu cầu kích thước chẵn (behavior)¶
image.lens_corr() và image.linpolar() / image.logpolar() bây giờ yêu cầu chiều rộng và chiều cao ảnh chẵn và sẽ báo lỗi với kích thước lẻ. Hãy cắt hoặc thay đổi kích thước ảnh về kích thước chẵn trước khi gọi các phương thức này.
Danh sách kiểm tra di chuyển¶
Để chuyển đổi sạch sang v3.6.1, công việc thông thường là:
Xóa các lệnh gọi
sensor.set_framerate()(việc xóa set_framerate).Chuyển các tác vụ TensorFlow ra khỏi OpenMV Cam M7 (thay đổi TensorFlow trên M7).
Ngừng dựa vào giá trị trả về của
set_pixformat()/set_framesize()và bắtValueErrorcho các định dạng điểm ảnh không được hỗ trợ (thay đổi giá trị trả về).Đảm bảo kích thước ảnh chẵn trước
lens_corr()/linpolar()/logpolar()(yêu cầu kích thước chẵn).
Tất cả các tập lệnh khác chạy không thay đổi.