v3.3.0¶
v3.3.0 là một phiên bản lớn. Nó bổ sung hỗ trợ đầy đủ camera nhiệt FLIR Lepton với giao diện sensor.ioctl() mới và bảng màu, một module tv xuất video SPI, chế độ kích hoạt màn trập toàn cầu, một loạt phương thức vẽ/phân tích image mới (gamma_corr(), draw_ellipse(), draw_edges(), nhiều thuộc tính blob), và các thư viện ToF / motor / linalg mới. API cpufreq đã được cải tiến và sensor.set_framesize() giờ sẽ đưa ra ngoại lệ — đọc các thay đổi gây gián đoạn bên dưới.
Điểm nổi bật¶
FLIR Lepton — hỗ trợ camera nhiệt đầy đủ qua giao diện
sensor.ioctl()mới, bảng màu, vàimage.to_rainbow().Module
tv— xuất video TV SPI / composite.Chế độ kích hoạt màn trập toàn cầu — chụp kích hoạt MT9V034 qua
sensor.ioctl().Xử lý ảnh —
gamma_corr(),draw_ellipse(),draw_edges(), pha trộn alphadraw_image(), và nhiều thuộc tính blob mới.Thư viện mới — driver khoảng cách ToF VL53L1X, driver motor TB6612, micro-linalg.
Gây gián đoạn: API
cpufreqđã được cải tiến,sensor.set_framesize()giờ đưa ra ngoại lệ khi thất bại,sensor.alloc_extra_fb()bỏ Bayer/JPEG, và các đối số vị trí củaimage.replace()đã dịch chuyển — xem phần thay đổi gây gián đoạn.
Tính năng mới¶
FLIR Lepton — thêm
sensor.ioctl()để điều khiển cảm biến riêng và một bộ đầy đủ Lepton ioctl (đo bức xạ, làm mới/độ phân giải, chạy lệnh, đặt/lấy thuộc tính, nhiệt độ FPA/AUX theo °C, chế độ/phạm vi đo, chiều rộng/chiều cao),sensor.set_color_palette()/sensor.get_color_palette()vớisensor.PALETTE_RAINBOW/PALETTE_IRONBOW,image.to_rainbow(), và các tập lệnh ví dụ Lepton (27-Lepton).Chế độ kích hoạt —
IOCTL_SET_TRIGGERED_MODE/IOCTL_GET_TRIGGERED_MODEđể chụp kích hoạt màn trập toàn cầu MT9V034, kèm theo các ví dụ tốc độ cao và chế độ kích hoạt.Module
tv— thêm các ràng buộc xuất video TV SPI / composite.Xử lý ảnh — thêm
image.gamma_corr(),image.draw_ellipse(),image.draw_edges(), pha trộn alphadraw_image(), từ khóamask=choclear(), thêm lạimask_rectangle()/mask_circle()/mask_ellipse(), các từ khóa xoay / hmirror / vflip chodraw_string()/draw_text(), từ khóatranspose(và bí danhassign/set) choreplace(),copy()vớix_scale/y_scalecùngcrop()/scale(), hàm tạoImage()từ kích thước, định dạng pixelsensor.BINARY, các hàm chuyển đổi không gian màu được xuất, và nhiều thuộc tính blob mới (corners,perimeter,roundness,elongation,extent,compactness,solidity,convexity,enclosing_circle,enclosed_ellipse, xoay).Thư viện — thêm driver cảm biến khoảng cách ToF
vl53l1x, driver motortb6612(kèm theo các ví dụ Motor-Shield DC và stepper), và một thư viện micro-linalg (ulinalg/umatrix).Nâng cấp FatFS lên FF13C (hỗ trợ exFAT).
Các thay đổi và cải tiến khác¶
Cải thiện chất lượng JPEG mặc định (trung bình giữa thấp–cao thay vì giá trị cố định); các thao tác ảnh tại chỗ không còn yêu cầu lặp lại ảnh làm đối số đầu tiên;
draw_string()chấp nhận giá trị tỷ lệ không nguyên.
Sửa lỗi¶
Camera và cảm biến:
Sửa lỗi treo khởi động Lepton 3.5 (timeout + khôi phục) và độ tin cậy reset,
set_framesize()của MT9V034 trướcset_pixformat()(thứ tự gọi không còn quan trọng), MT9V034 WVGA trên STM32H7, phạm vi tự động phơi sáng MT9V034 và cập nhật thanh ghi shadow, và lỗi ADC H7.
Xử lý ảnh:
Sửa lỗi truy cập bộ nhớ không hợp lệ trong
find_apriltags(),copy()khi sao chép ảnh đã chia tỷ lệ vào bộ đệm khung hình chính, phân bổ bộ đệm khung hìnhto_grayscale()/to_rgb565(),len()của đối tượng điểm đặc trưng, xử lý ranh giới MCU JPEG, phân tích danh sách ngưỡngbinary(), vàdraw_keypoints()chấp nhận các tuple điểm đặc trưng.
Hệ thống:
Sửa lỗi rò rỉ mất cân bằng mark/free
fb_alloctrên các phương thứcimage/fir/lcd/tv/nn, làm chopy_assertgiải phóng bộ nhớ bộ đệm khung hình khi bắt ngoại lệ (#417), xóa cờ UART overrun (ORE) để các overrun không còn chặn đọc UART, sửa trình xử lý ngắt RTC, và sửa công cụcascade_convert.pytrên Windows.
Hỗ trợ phần cứng và bo mạch¶
Camera nhiệt FLIR Lepton.
TV shield — xuất video TV SPI / composite.
Chế độ kích hoạt màn trập toàn cầu (MT9V034).
Thay đổi API gây gián đoạn¶
Các thay đổi API hiển thị với người dùng giữa v3.2.0 và v3.3.0. Phạm vi: Python C-modules trong modules/ và thư viện Python trong scripts/libraries/.
Mỗi thay đổi được gắn nhãn theo mức độ ảnh hưởng:
nghiêm trọng — ảnh hưởng đến hầu hết các tập lệnh đã dùng tính năng này; bạn sẽ cần chuyển đổi code.
nhỏ — API hẹp; chỉ ảnh hưởng đến các tập lệnh đã dùng nó.
hành vi — API giống nhau, kết quả khác; hãy kiểm tra lại các tập lệnh đã được 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. Mỗi hash commit liên kết đến diff của nó trên GitHub.
API cpufreq được cải tiến (nghiêm trọng)¶
Module cpufreq đã được cải tiến để hỗ trợ H7. Các hằng số cpufreq.CPUFREQ_120MHZ / 144 / 168 / 192 / 216MHZ và cpufreq.get_frequency() đã bị loại bỏ. cpufreq.set_frequency() giờ nhận một số nguyên MHz đơn thuần (ví dụ: cpufreq.set_frequency(120)), và cpufreq.get_current_frequencies() / cpufreq.get_supported_frequencies() đã được thêm vào.
Commits: 6babf84a1
Các đối số vị trí của image.replace() đã dịch chuyển (nhỏ)¶
image.replace() đã có thêm đối số transpose, dịch chuyển đối số mask theo vị trí từ vị trí 4 sang vị trí 5. Code truyền mask theo vị trí (ví dụ: img.replace(src, hmirror, vflip, mask)) phải chuyển sang dạng từ khóa img.replace(src, mask=mask).
Commits: dbe7bf059
sensor.alloc_extra_fb() không còn chấp nhận Bayer/JPEG (nhỏ)¶
sensor.alloc_extra_fb() không còn chấp nhận sensor.BAYER hoặc sensor.JPEG (hiện cũng hỗ trợ sensor.BINARY). Code phân bổ thêm bộ đệm khung hình ở định dạng Bayer hoặc JPEG phải dùng GRAYSCALE / RGB565 (hoặc phân bổ bộ đệm theo cách khác).
Commits: f9e6b3fe0
sensor.set_framesize() đưa ra ngoại lệ khi thất bại (hành vi)¶
sensor.set_framesize() giờ đưa ra ValueError khi kích thước khung hình không được hỗ trợ thay vì trả về False. Code kiểm tra giá trị trả về False phải bắt ngoại lệ ValueError thay thế.
Commits: b0442633e
Danh sách kiểm tra di chuyển¶
Để chuyển đổi sạch sang v3.3.0, công việc thông thường là:
Chuyển đổi code
cpufreqsangset_frequency()với MHz nguyên vàget_current_frequencies()/get_supported_frequencies()(cải tiến cpufreq).Truyền
maskvàoimage.replace()dưới dạng từ khóa (thay đổi replace).Phân bổ thêm bộ đệm khung hình dưới dạng
GRAYSCALE/RGB565thay vì Bayer/JPEG (thay đổi alloc_extra_fb).Bắt
ValueErrorquanhsensor.set_framesize()thay vì kiểm traFalse(thay đổi set_framesize).
Tất cả các tập lệnh khác chạy không đổi.