v1.4.0¶
v1.4.0 là bản tái tổ chức imlib nền tảng. find_blobs() / find_markers() đã được viết lại cho theo dõi ngưỡng màu trực tiếp, nhiều phương thức ảnh độc lập được gộp vào các tuple blob, và một số phương thức ảnh được đổi tên (subimg → copy, blit → replace, find_eyes → find_eye, compress → compressed). Bản này cũng thêm sensor.get_fb() / các nút bật/tắt AGC / AEC và ~60 tập lệnh ví dụ. Đây là bản phát hành phá vỡ API nặng nề — hãy đọc các thay đổi phá vỡ bên dưới.
Điểm nổi bật¶
Theo dõi blob dựa trên màu sắc —
find_blobs()nhận trực tiếp các ngưỡng màu và trả về danh sách phẳng các tuple blob.Dọn dẹp Imlib —
subimg()→copy(),blit()→replace(),find_eyes()→find_eye(),compress()→compressed().Sensor — thêm
sensor.get_fb()và các nút bật/tắt AGC/AEC.~60 tập lệnh ví dụ được thêm/mở rộng.
Thay đổi phá vỡ: API blob, các phương thức ảnh đã xóa, và một số đổi tên — xem các thay đổi phá vỡ.
Tính năng mới¶
Sensor — thêm
sensor.get_fb()(lấy lại bộ đệm khung hình ảnh chụp cuối cùng),sensor.set_gain_ctrl(enable)(bật/tắt AGC), vàsensor.set_exposure_ctrl(enable)(bật/tắt AEC).Image — chỉ số ảnh (
img[i]) giờ hỗ trợ cả đọc và ghi điểm ảnh (thang xám / RGB565 / JPEG); thêmimage.compress()tại chỗ và từ khóaquality=cho các hàm JPEG;find_blobs()/find_markers()/find_features()giờ trả về danh sách rỗng (có thể lặp) thay vì không phải danh sách khi không tìm thấy gì.Thêm ~60 tập lệnh ví dụ (điều khiển board, bộ lọc ảnh, theo dõi màu, phát hiện khuôn mặt / mắt / đặc trưng, WiFi shield) và ví dụ phát hiện mống mắt thứ hai.
Các thay đổi và cải tiến khác¶
image.histeq()giờ hoạt động trên ảnh RGB565, không chỉ thang xám.
Sửa lỗi¶
Đã khởi tạo
pyb.DACkhi khởi động để DAC hoạt động (#121), sửaimage.dilate()bị hỏng, lỗi hỏng zero-byteclient.send()của WINC, lặp lại việc hợp nhất blob, lỗi tái khởi tạo bộ đệm file làm hỏng hệ thống file sau lần sử dụng đầu tiên, tính toánTo_min/To_maxcủa thermopile (#113), và áp dụng bản vá HAL I2C/DMA MicroPython upstream.
Phần cứng và hỗ trợ board¶
WiFi shield — WINC1500 cập nhật lên file board Rev-B.
pyb.DAC— ngoại vi DAC được bật.
Thay đổi phá vỡ API¶
Các thay đổi API hiển thị với người dùng giữa v1.3.0 và v1.4.0. Phạm vi: C-modules Python trong modules/ và thư viện Python trong scripts/libraries/.
Mỗi thay đổi được gắn nhãn theo mức độ tác động:
major — ảnh hưởng đến hầu hết các tập lệnh đã sử dụng tính năng đó; bạn cần port lại code.
minor — API hẹp; chỉ ảnh hưởng đến các tập lệnh đã sử dụng nó.
Các thay đổi được nhóm theo mức độ tác động theo thứ tự đó. Nếu bạn chỉ muốn port code, hãy chuyển đến danh sách kiểm tra di chuyển ở cuối trang. Mỗi hash commit liên kết đến diff trên GitHub.
find_blobs() / find_markers() được viết lại (major)¶
image.find_blobs() / find_markers() đã được viết lại cho theo dõi dựa trên màu sắc: bạn giờ truyền trực tiếp các ngưỡng màu (và hàm lọc tùy chọn) thay vì thao tác trên ảnh đã phân vùng trước, và kết quả là một danh sách phẳng duy nhất gồm các tuple blob 10 phần tử (với trường mã màu) thay vì cây phân cấp theo màu. Hãy viết lại các tập lệnh theo dõi màu để truyền ngưỡng màu và lặp qua danh sách phẳng.
Các phương thức ảnh độc lập bị xóa (major)¶
image.threshold, image.centroid(), image.orientation_radians(), image.orientation_degrees(), và image.pixels() đã bị xóa. Dữ liệu centroid / hướng / số điểm ảnh giờ có sẵn dưới dạng các trường trong tuple blob được trả về bởi find_blobs().
Commits: 9e5d379c1
Đổi tên các phương thức Imlib (major)¶
Một số phương thức ảnh được đổi tên/chỉnh sửa: image.subimg() → image.copy(), image.blit() → image.replace(), và image.blend() được thay đổi để khớp với các phép toán hai ảnh khác. Các phương thức image.scale() / scaled() / rainbow() đã bị xóa (rainbow chuyển sang module FIR). Hãy cập nhật các lời gọi sang tên mới.
Commits: b534dc6ff
find_eyes() đổi tên thành find_eye() (minor)¶
image.find_eyes() đã được đổi tên thành image.find_eye() và giờ trả về tuple 2 phần tử mống mắt (x, y) thay vì tuple mắt trước đây. Hãy đổi tên lời gọi và cập nhật việc xử lý giá trị trả về.
Commits: 7a01a9bed
image.compress() đổi tên thành compressed() (minor)¶
image.compress() (hàm trả về ảnh JPEG mới) đã được đổi tên thành image.compressed(); image.compress() mới thay vào đó nén ảnh tại chỗ và trả về None. image.save() cũng nhận thêm từ khóa quality= và giờ trả về None thay vì True. Hãy chuyển img.compress(q) (khi mong đợi ảnh được trả về) sang img.compressed(quality=q).
Commits: 367e5fdd3
Danh sách kiểm tra di chuyển¶
Để port sạch sang v1.4.0, công việc điển hình là:
Viết lại code theo dõi màu để truyền ngưỡng màu vào
find_blobs()/find_markers()và lặp qua danh sách tuple blob phẳng (việc viết lại find_blobs).Đọc dữ liệu centroid / hướng / điểm ảnh từ các tuple blob thay vì các phương thức độc lập đã bị xóa (các phương thức ảnh đã xóa).
Đổi tên
subimg→copy,blit→replace, sửa các lời gọiblend(), và thay thếscale/scaled/rainbow(việc đổi tên imlib).Đổi tên
find_eyes()→find_eye()(việc đổi tên find_eye) vàcompress()→compressed()(việc đổi tên compress).
Tất cả các tập lệnh khác chạy không thay đổi.