v2.8.0

v2.8.0 là một bản phát hành lớn. Nó bổ sung hỗ trợ OpenMV Cam H7 (STM32H7) với bộ mã hóa JPEG phần cứng và H7 ADC/DAC, cải tổ toàn diện API image (độ dày/tô màu khi vẽ, các phép toán toán học/nhị phân, nhiều bộ lọc mới, phân ngưỡng Otsu), đa luồng MicroPython, và module phiên bản omv. Thứ tự phân tích đối số Python đã được cố định và image.mask_ellipse() đã bị xóa — hãy đọc các thay đổi không tương thích bên dưới.

Điểm nổi bật

  • OpenMV Cam H7 — bo mạch STM32H7 mới với bộ mã hóa JPEG phần cứng và H7 ADC / DAC.

  • image được cải tổ — độ dày đường nét, tô màu hình dạng, draw_arrow() / draw_image(), đầy đủ các phép toán toán học/nhị phân, và nhiều bộ lọc mới.

  • Phân ngưỡng Otsuhistogram.get_threshold() và đối tượng Threshold.

  • Đa luồng — hỗ trợ module _thread của MicroPython.

  • Module omv — thông tin phiên bản / bo mạch.

  • Không tương thích: thứ tự đối số vị trí Python hiện được áp dụng nghiêm ngặt và image.mask_ellipse() đã bị xóa — xem các thay đổi không tương thích.

Tính năng mới

  • OpenMV Cam H7 — hỗ trợ bo mạch STM32H7 với bộ mã hóa JPEG phần cứng, H7 ADC và H7 DAC.

  • Vẽ — thêm thickness (độ dày) cho đường thẳng, fill (tô màu) cho hình dạng (hình chữ nhật / hình tròn), scale / kerning cho văn bản, từ khóa mono_space trên draw_string(), image.draw_arrow(), và image.draw_image() (vẽ sprite / mask).

  • Các phép toán toán học — thêm add(), sub(), mul(), div(), min(), max(), difference(), blend(), replace() (với hmirror / vflip / mask), và remove_shadows(); các phép toán cơ bản giờ đây chấp nhận giá trị vô hướng/màu sắc áp dụng cho tất cả các điểm ảnh.

  • Nhị phân / hình thái học — kiểu ảnh nhị phân mới và binary(); các phép toán đường thẳng cùng erode() / dilate() chấp nhận mask; thêm open() / close() / top_hat() / black_hat().

  • Bộ lọc — thêm cartoon, flood_fill, bilateral, laplacian, bí danh blur / gaussian_blur, và cân bằng biểu đồ tần suất thích ứng (histeq(adaptive=, clip_limit=, mask=)).

  • Thống kêget_statistics() / get_histogram() chấp nhận danh sách ngưỡng màu sắc và invert; thêm histogram.get_threshold() theo Otsu và đối tượng Threshold.

  • CMSIS CNN — thêm image.classify_object() với ví dụ cnn.py (được thay thế bởi module nn trong v3.0.0).

  • Đa luồng — kích hoạt module _thread của MicroPython.

  • Module omv — thêm thông tin phiên bản (version_string, arch, board_type, board_id); kích hoạt bus I2C4 machine và các hàm toán học đặc biệt (erf, gamma, …); thêm các ví dụ motor-shield và nhiều tập lệnh ví dụ mới.

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

  • Xung nhịp ngoài của cảm biến H7 được giảm xuống 48 MHz (chất lượng ảnh tốt hơn, FPS thấp hơn); chất lượng JPEG thấp/cao giờ đây có thể cấu hình theo từng bo mạch (và được tinh chỉnh cho H7); thêm kiểm soát tính năng imlib_config.h theo từng bo mạch (tất cả các hàm xử lý ảnh vẫn được kích hoạt trên firmware gốc); cập nhật MicroPython đi kèm.

Sửa lỗi

Xử lý ảnh:

  • Đã sửa image.save() khi không có phần mở rộng tệp, ánh xạ gain_db / gain_db_ceiling cho OV2640 / OV7725 / OV9650 / MT9V034, độ khuếch đại quá mức trong sharpen(), nhiễu cạnh hình thái học, lỗi chia cho không trong một phép toán ảnh, và lỗi crash tràn stack do kích thước kernel bộ lọc quá lớn (giờ đây báo lỗi rõ ràng).

Hệ thống:

  • Bảo vệ bộ đệm USB VCP bằng đoạn mã nguyên tử (lỗi hỏng dữ liệu serial, #313), sửa kết nối USB trên Windows, gắn kết hệ thống tệp flash nội bộ khi thẻ SD bị lỗi, giá trị PLLP của cpufreq set_frequency(), và một lỗi khi flash firmware qua bootloader.

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

  • OpenMV Cam H7 (STM32H7) — bo mạch mới với bộ mã hóa JPEG phần cứng và H7 ADC / DAC.

  • Module machine — kích hoạt bus I2C4.

Các thay đổi API không tương thích

Các thay đổi API không tương thích với người dùng giữa v2.7.0 và v2.8.0. Phạm vi: C-module Python trong modules/ và thư viện Python trong scripts/libraries/.

Cả hai thay đổi không tương thích đều là nhỏ và chỉ ảnh hưởng đến các tập lệnh sử dụng tính năng liên quan. Mỗi hash commit liên kết đến diff của nó trên GitHub.

Thứ tự đối số vị trí Python hiện được áp dụng nghiêm ngặt (nhỏ)

Việc phân tích đối số trong các C-module Python (image / sensor / fir / gif / lcd / mjpeg) giờ đây đọc đối số vị trí trước từ khóa và khóa thứ tự vị trí. Kết hợp với các từ khóa mới trên các phương thức vẽ (draw_line() / draw_rectangle() / draw_circle() / draw_string() / draw_cross() / draw_keypoints() thêm thickness / fill / scale / size), code truyền tham số không theo thứ tự vị trí — hoặc truyền color vị trí sau một trong các đối số mới — phải sử dụng đối số từ khóa hoặc thứ tự vị trí đã được ghi tài liệu.

Commits: e0e112468, fc74e70c3

Đã xóa image.mask_ellipse() (nhỏ)

image.mask_ellipse() đã bị xóa. Các tập lệnh gọi nó phải bỏ lời gọi đó hoặc sử dụng ROI rõ ràng / ảnh mask thay thế.

Commits: d7159fba3

Danh sách kiểm tra di chuyển

Truyền đối số theo từ khóa (hoặc theo thứ tự vị trí đã được ghi tài liệu), đặc biệt là color trên các phương thức vẽ (thay đổi thứ tự đối số), và xóa các lời gọi image.mask_ellipse() (việc xóa mask_ellipse). Tất cả các tập lệnh khác chạy không thay đổi.