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 HM01B0OV7690. 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 xoayget_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ảnhrotation_corr() bổ sung từ khóa fovcorners (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 xoaysensor.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óa fovcorners (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óa bgr.

  • collections.deque — được kích hoạt trong bản dựng MicroPython.

  • Đã thêm hằng số id sensor.OV7690sensor.HM01B0 cùng một ví dụ bộ lọc ảnh ulab theo 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_fb giờ 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_fb của tf.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()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()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.

Commits: b36460a36, 2b26ca17b

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à:

  1. Xóa các lệnh gọi sensor.set_framerate() (việc xóa set_framerate).

  2. Chuyển các tác vụ TensorFlow ra khỏi OpenMV Cam M7 (thay đổi TensorFlow trên M7).

  3. Ngừng dựa vào giá trị trả về của set_pixformat() / set_framesize() và bắt ValueError cho các định dạng điểm ảnh không được hỗ trợ (thay đổi giá trị trả về).

  4. Đả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.