v4.5.3¶
v4.5.3 เป็นรุ่นใหญ่: รองรับออโตโฟกัสของ OV5640, การวาดเส้นแบบ anti-aliased, ตัวถอดรหัส JPEG ด้วยฮาร์ดแวร์ที่รวมเข้าหลัก, ความสามารถของ i.MX RT (RT1060) ที่เพิ่มขึ้นอย่างมาก, และการแก้ไขกล้อง/ISP จำนวนมาก โดยมีการลบเมธอดภาพที่ไม่ค่อยใช้บางส่วนและเปลี่ยน API ของ ISP/display — อ่านรายการเปลี่ยนแปลงแบบ breaking ด้านล่าง
Highlights¶
ออโตโฟกัส OV5640 — เปิดใช้งานบน OpenMV 4 / 4 Plus / RT1060 (
sensor.ioctl(sensor.IOCTL_TRIGGER_AUTO_FOCUS)) พร้อมตัวอย่างdraw_line()แบบ anti-aliased และตัวถอดรหัส JPEG ด้วยฮาร์ดแวร์ STM32 ที่รวมเข้าหลัก (ถอดรหัส JPEG ได้เร็วขึ้น)OpenMV RT1060 ได้รับ ulab, การดำเนินการ ISP,
set_framerate()/set_frame_callback(), บัฟเฟอร์เฟรมขนาดใหญ่ขึ้นมาก และไดรเวอร์ CANBreaking:
Image.div()/cartoon()/mul()ถูกลบออก และ API บางส่วนของ ISP/display มีการเปลี่ยนแปลง — ดูรายการ breaking changes
New features¶
ออโตโฟกัส OV5640 — เฟิร์มแวร์ออโตโฟกัสเปิดใช้งานบน OPENMV4, OPENMV4P และ OPENMV RT1060; เปิดใช้งานด้วย
sensor.ioctl(sensor.IOCTL_TRIGGER_AUTO_FOCUS)มีการเพิ่มตัวอย่างใหม่07-Sensor-Control/autofocus.pyการวาดเส้นแบบ anti-aliased —
draw_line()ได้รับการรองรับ anti-aliasingตัวควบคุมจอแสดงผล SPI แบบกำหนดเอง —
SPIDisplayรองรับคีย์เวิร์ดcontroller=และเปิดเผย hookbus_writeสำหรับลำดับการเริ่มต้น/คำสั่งแบบกำหนดเองการอัปเกรด
Image.ccm()— รองรับเมทริกซ์แบบซ้อน 3x3 / 4x3 / 3x4 / 4x4 และอาร์เรย์ ulab (พร้อมแถว offset ต่อช่องสัญญาณแบบเลือกได้); เพิ่มตัวอย่างการแก้ไขสีการจับภาพ JPEG บน i.MX RT — รองรับการจับภาพ
sensor.JPEGบน Arduino Portenta/Nicla Vision/Giga พร้อมset_framerate()และset_frame_callback()บนพอร์ต mimxrtการตรวจสอบโมเดล TFLite — โมเดลตอนนี้มีแฮชลำดับตัวดำเนินการและขนาดชุดตัวดำเนินการ
WiFi — เพิ่มค่าคงที่โหมดความปลอดภัย CYW43; สคริปต์ตัวอย่างการควบคุมบอร์ด i.MX RT ใหม่ (Pin/ADC/CAN/I2C/PWM/SPI/UART/...)
Other changes and improvements¶
MicroPython อัปเดตเป็น 1.22; CMSIS อัปเดตเป็น 5.9.0
ตัวถอดรหัส JPEG ด้วยฮาร์ดแวร์ STM32 รวมเข้าหลัก — ถอดรหัส JPEG เร็วขึ้นบน codec ในชิป
ปรับ
Image.invert()/negate()และการดำเนินการภาพแบบ binary/math ให้เหมาะสมยิ่งขึ้น (CMSIS intrinsics)ไลบรารี
rpcและvl53l1xได้รับการทำให้พกพาได้ (ใช้machine/timeแทนpyb) จึงทำงานได้บนพอร์ตที่ไม่ใช่ STM32DMA เร่งความเร็ว frame-buffer memcpy บน OpenMV H7 / H7 Plus / Pro / Pure Thermal และ Arduino Giga / Nicla Vision / Portenta H7; STM32 ตอนนี้สแกนอุปกรณ์ I2C ครั้งเดียวต่อการสแกนเพื่อบูตเร็วขึ้น
Bug fixes¶
กล้องและเซนเซอร์:
แก้ไข XCLK ของกล้อง STM32 ให้มี duty cycle 50% ที่แท้จริงและข้อบกพร่องเมื่อตั้งความถี่นาฬิกากล้องเป็นศูนย์; แก้ไข Bayer crop+transpose, การเลื่อนสี YUV422 และ
set_windowing()บนพอร์ต mimxrtแก้ไขการตรวจสอบ chip-ID ของ GC2145 และ hmirror/vflip บนการติดตั้งแบบหมุน; แก้ไข PAJ6100 บน RT1062 และบัฟเฟอร์ SPI overflow ของ PixArt PAJ7620/PAW3902
การประมวลผลภาพ:
แก้ไขการตัด roi ของ
find_rects(), การตัดทอน fractional offset ของmorph(), ค่าเริ่มต้น contrast/brightness ของimage.gamma(), offset A/B ของget_threshold()บน RGB565 และการถอดรหัส JPEG สำหรับขนาดที่ไม่เป็นผลคูณของ 8
ระบบและไลบรารี:
machine.LED.value()ที่ไม่มีอาร์กิวเมนต์ตอนนี้คืนค่าสถานะ LED แทนที่จะล้าง; แก้ไข SPI SSEL deinit บน bus ที่ใช้ร่วมกัน,machine.deepsleep()บน RT1062, TF crash เมื่อขาด operator และการเปิดใช้งาน NIC อัตโนมัติของ WINC1500/ninaw10 บนconnect()
Hardware and board support¶
OpenMV RT1060 — เปิดใช้งาน ulab และการดำเนินการ ISP, บัฟเฟอร์เฟรมขนาดใหญ่ขึ้น (10M→20M) / fb_alloc (2M→11M), กู้คืนไดรเวอร์ CAN, heap มากขึ้น
Arduino GIGA — รองรับกล้อง GC2145 พร้อมการตรวจจับอัตโนมัติ GC2145/OV5640 (ใช้ที่อยู่ I2C เดียวกัน)
i.MX RT — รองรับการจับภาพ
sensor.JPEG
Breaking API changes¶
การเปลี่ยน API ที่มองเห็นได้ระหว่าง v4.5.2 และ v4.5.3 ขอบเขต: Python C-modules ใน modules/ และไลบรารี Python ใน scripts/libraries/
การเปลี่ยนแปลงแต่ละรายการถูกติดแท็กตามผลกระทบ:
minor — API แคบ; ส่งผลกระทบเฉพาะสคริปต์ที่ใช้มัน
behavior — API เดิม, ผลลัพธ์ต่างออกไป; ตรวจสอบสคริปต์ที่ปรับแต่งแล้วอีกครั้ง
การเปลี่ยนแปลงจัดกลุ่มตามผลกระทบตามลำดับนั้น หากต้องการพอร์ตโค้ดเพียงอย่างเดียว ข้ามไปที่ รายการตรวจสอบการย้าย ท้ายเอกสาร แฮชของ commit แต่ละรายการลิงก์ไปยัง diff บน GitHub
เมธอดภาพที่ถูกลบออก (minor)¶
Image.div(), Image.cartoon() (และตัวอย่าง) และ Image.mul() ถูกลบออก
Display module API (minor)¶
การ fallback ชื่อโมดูล udisplay แบบเดิมถูกลบออก — โมดูลนี้ลงทะเบียนเฉพาะในชื่อ display เมธอด dsi_write() / dsi_read() ที่ใช้เฉพาะ DSI ถูกแทนที่ด้วย bus_write() / bus_read() ซึ่งตอนนี้ใช้ได้กับตัวควบคุมจอแสดงผลทุกประเภท
การเปลี่ยน API ของ MQTT และ tf.regression (minor)¶
MQTTClient ของไลบรารี mqtt ได้รับการปรับปรุงใหม่: port บังคับใส่ตอนนี้, เพิ่มคีย์เวิร์ด ssl_params / callback ใน constructor และอาร์กิวเมนต์ timeout ใน connect(), ลบค่าเริ่มต้น ssl= / port=0 เดิมออก และ check_msg() ตอนนี้ไม่บล็อก tf.regression() ได้รับการเขียนใหม่ — ลายเซ็นตอนนี้คือ regression(model, array) และรองรับโมเดล 1D/2D/3D และแบบ quantized (int8)
การเปลี่ยนแปลงพฤติกรรม ISP / sensor (behavior)¶
Image.awb() ได้รับการปรับปรุงใหม่ — gray-world (ค่าเริ่มต้น) เทียบกับ white-patch (max=True) ตอนนี้ระบุอย่างชัดเจน และอาร์กิวเมนต์ max รวมทั้งอาร์กิวเมนต์ gamma / contrast / brightness ของ Image.gamma() ตอนนี้เป็น keyword-only (การเรียกแบบ positional ต้องอัปเดต) Image transpose ถูกปิดใช้งานสำหรับ YUV422 (ก่อนหน้านี้ผลิตผลลัพธ์ไม่ถูกต้อง) และการเลื่อนสี YUV422 ได้รับการแก้ไขให้ตรงกับ Bayer เส้นทาง STM32 JPEG ตอนนี้แสดงข้อผิดพลาดเมื่อมีความไม่ตรงกันของ geometry ของ JPEG แทนที่จะสร้างภาพที่เสียหาย และโหมด WiFi AP ตอนนี้ใช้โหมดความปลอดภัยเริ่มต้นบนพอร์ต STM32 และ i.MX RT
Commits: 36d5cecbd, 00500ccde, c1eeaefd6, 333fb2b5f, 55cab8733, c7d40f6af
Migration checklist¶
สำหรับการพอร์ตที่สะอาดไปยัง v4.5.3 งานทั่วไปคือ:
หยุดใช้
Image.div()/cartoon()/mul()(เมธอดที่ถูกลบ)นำเข้าโมดูล display เป็น
displayและเปลี่ยนdsi_write/dsi_readเป็นbus_write/bus_read(การเปลี่ยน display API)อัปเดตการสร้าง
MQTTClient(portจำเป็นต้องใส่;ssl_params/callback) และการเรียกtf.regression()(การเปลี่ยน library API)ส่ง
maxของawb()และgamma/contrast/brightnessของgamma()เป็น keyword argument และตรวจสอบสมมติฐาน YUV422/transpose และความปลอดภัยโหมด AP อีกครั้ง (การเปลี่ยน ISP/sensor)