v2.7.0

v2.7.0 ปรับปรุง API auto-gain / auto-exposure / white-balance ของ sensor เป็นหน่วยฟิสิกส์ (dB / ไมโครวินาที), ปรับโครงสร้าง find_displacement() แบบ phase-correlation ใหม่ (เพิ่มการหมุน/สเกล), เพิ่ม get_similarity() (SSIM), chrominvar() / illuminvar(), บัฟเฟอร์เฟรมพิเศษ และไลบรารี MQTT เป็นรุ่นที่มีการเปลี่ยนแปลงมาก — โปรดอ่านรายละเอียดการเปลี่ยนแปลงที่ส่งผลกระทบด้านล่าง

ไฮไลท์

  • API sensor สมัยใหม่set_auto_gain() / set_auto_exposure() / set_auto_whitebal() ตอนนี้ใช้ dB / ไมโครวินาที พร้อม get_gain_db() / get_exposure_us() / get_rgb_gain_db() ที่ตรงกัน

  • Phase correlation — ปรับโครงสร้าง find_displacement() ใหม่พร้อมการหมุน / สเกล และ find_rotscale() / linpolar() / logpolar()

  • SSIM — ความคล้ายคลึงเชิงโครงสร้าง image.get_similarity()

  • บัฟเฟอร์เฟรมพิเศษsensor.alloc_extra_fb() / dealloc_extra_fb()

  • MQTT — ไลบรารี MQTT ใหม่

  • Breaking: API gain/exposure/whitebal ของ sensor, find_displacement() / ขนาดเฟรม FFT, find_number(), เครื่องมือ WINC firmware และ z_rotation() ของ AprilTag ล้วนเปลี่ยนแปลงไป — ดูรายละเอียดการเปลี่ยนแปลงที่ส่งผลกระทบ

ฟีเจอร์ใหม่

  • Sensor — เพิ่ม sensor.get_gain_db(), sensor.get_exposure_us(), sensor.get_rgb_gain_db(), keyword gain_db_ceiling บน set_auto_gain(), รองรับ hmirror / vflip ของ MT9V034 และ sensor.alloc_extra_fb() / sensor.dealloc_extra_fb() สำหรับบัฟเฟอร์เฟรมพิเศษใน RAM

  • Image — เพิ่ม remove_shadows(), min() / max() (การเปรียบเทียบเฟรม), get_similarity() (SSIM) พร้อมตัวอย่างความคล้ายคลึงเชิงโครงสร้าง, chrominvar() / illuminvar(), find_rotscale(), linpolar() / logpolar(), keyword threshold / offset / invert บน adaptive filters mean() / mode() / median() / midpoint(), len() / การ indexing บน keypoints object และ accessor .match() บน keypoint-match object

  • ไลบรารี / เครือข่าย — เพิ่มไลบรารี MQTT (พร้อมตัวอย่าง WiFi MQTT) และโหมด network.WINC.MODE_BSP สำหรับการเขียนโปรแกรม WINC firmware ผ่าน debug UART

  • ตัวอย่าง — เพิ่มสคริปต์ deep_sleep.py / stop_mode.py แบบ low-power, optical flow ขั้นสูง และสคริปต์ตัวอย่าง linear/log-polar; firmware ตอนนี้แยกวิเคราะห์ uart.ini เมื่อบูตเพื่อเปิดใช้งาน REPL UART

การเปลี่ยนแปลงและการปรับปรุงอื่น ๆ

  • get_regression() ได้รับ keyword area_threshold / pixels_threshold และการ regression แบบ robust ที่เร็วขึ้น (สำหรับการติดตามเส้น/การแข่งขัน); get_pixel() ตอนนี้รองรับภาพ Bayer; เพิ่มพื้นฐาน STM32H7 (CMSIS headers / HAL / bootloader — บอร์ด H7 ยังไม่พร้อมใช้งาน); อัปเดต firmware WINC1500 ที่รวมมา (19.4.4 / 19.5.2)

การแก้ไขข้อบกพร่อง

การประมวลผลภาพ:

  • แก้ไขบัก out-of-bounds ของการค้นหา diamond ใน find_template(), การบิดเบือนของ logpolar / linpolar และ illuminvar() ที่ทำงานผิดปกติเมื่อค่าสีใกล้ศูนย์

Sensor และระบบ:

  • แก้ไขบักของ auto-gain-control, คืนค่าขนาด MAIN_FB บน snapshot() (เพื่อให้ copy_to_fb ที่ความละเอียดต่างกัน, การปรับขนาด FB และ optical-flow pooling ทำงานได้อีกครั้ง), timeout ของ gethostbyname ของ WINC, pydfu clear-status บน bootloader H7 และโหมด stop/standby แบบ low-power

การรองรับฮาร์ดแวร์และบอร์ด

  • STM32H7 — พื้นฐาน (CMSIS / HAL / bootloader); บอร์ด OpenMV H7 ยังไม่พร้อมใช้งานในรุ่นนี้

  • WINC1500 — อัปเดต firmware ที่รวมมา

การเปลี่ยนแปลง API ที่ส่งผลกระทบ

การเปลี่ยนแปลง API ที่ผู้ใช้มองเห็นได้ระหว่าง v2.6.0 และ v2.7.0 ขอบเขต: Python C-modules ใน modules/ และ Python libraries ใน scripts/libraries/

การเปลี่ยนแปลงแต่ละรายการมีป้ายกำกับระบุผลกระทบ:

  • major — ส่งผลกระทบต่อสคริปต์ส่วนใหญ่ที่ใช้ฟีเจอร์นี้ คุณจำเป็นต้องปรับโค้ด

  • minor — API แคบ; ส่งผลกระทบเฉพาะสคริปต์ที่ใช้งานเท่านั้น

  • behavior — API เดิม ผลลัพธ์ต่างออกไป; ตรวจสอบสคริปต์ที่ปรับแต่งไว้อีกครั้ง

การเปลี่ยนแปลงถูกจัดกลุ่มตามผลกระทบตามลำดับนั้น หากต้องการเพียงแค่ปรับโค้ด ให้ข้ามไปที่ รายการตรวจสอบการย้าย ที่ท้ายเอกสาร แต่ละ hash ของ commit เชื่อมโยงไปยัง diff บน GitHub

sensor.set_auto_gain() ปรับโครงสร้างเป็น dB (major)

sensor.set_auto_gain() ไม่รับ keyword value= แบบจำนวนเต็มและไม่ส่งคืน True / False อีกต่อไป ใช้ sensor.set_auto_gain(False, gain_db=...) (ค่า float dB), อ่านกลับด้วย sensor.get_gain_db() ใหม่ และครอบการเรียกด้วย try / except เนื่องจากความล้มเหลวตอนนี้เกิด ValueError

Commits: b906c5f19

sensor.set_auto_exposure() ปรับโครงสร้างเป็นไมโครวินาที (major)

sensor.set_auto_exposure() ไม่รับ keyword value= แบบจำนวนเต็มและไม่ส่งคืน True / False อีกต่อไป ใช้ sensor.set_auto_exposure(False, exposure_us=...), อ่านกลับด้วย sensor.get_exposure_us() ใหม่ และจัดการ ValueError ที่เกิดเมื่อล้มเหลว

Commits: 7be0a7a18

find_displacement() / ขนาดเฟรม FFT ปรับโครงสร้างใหม่ทั้งหมด (major)

Phase-correlation ถูกปรับโครงสร้างใหม่ทั้งหมด image.find_displacement() ตอนนี้ส่งคืน displacement object (พร้อม x_translation() / y_translation() — เดิมคือ x_offset / y_offset — บวกกับ rotation() / scale() และ keyword ใหม่ logpolar / fix_rotation_scale); rot-scale object แยกต่างหากถูกลบออกและเพิ่ม find_rotscale() แทน ค่าคงที่ขนาดเฟรม FFT ถูกเปลี่ยนชื่อ/ลบออก: sensor.B40x30 ถูกลบออกทั้งหมด และ sensor.B64x32 / B64x64 ถูกเปลี่ยนชื่อเป็น sensor.B64X32 / B64X64 ตัวพิมพ์ใหญ่ (พร้อม B128X64 / B128X128 ใหม่)

Commits: c78f91b42, 213396d09

sensor.set_auto_whitebal() ปรับโครงสร้างเป็น dB (minor)

sensor.set_auto_whitebal() แทนที่ keyword value=[r, g, b] แบบจำนวนเต็มด้วย rgb_gain_db=[r, g, b] (float dB) และตอนนี้ส่งคืน None (เกิด ValueError เมื่อล้มเหลว) แทน True / False ใช้ sensor.get_rgb_gain_db() ใหม่เพื่ออ่านค่า gain กลับ

Commits: 30ecbdc4f

set_hmirror() / set_vflip() ส่งคืน None (minor)

sensor.set_hmirror() และ sensor.set_vflip() ตอนนี้ส่งคืน None และเกิด ValueError เมื่อล้มเหลว แทนการส่งคืนสถานะ True / False ลบโค้ดที่แตกกิ่งตามค่าที่ส่งคืนออก

Commits: aeb023804

เครื่องมือ WINC firmware ต้องการเส้นทางไฟล์ (minor)

เครื่องมือ firmware ของ network.WINC เปลี่ยนแปลง: wlan.fw_dump() / wlan.fw_update() ตอนนี้รับอาร์กิวเมนต์เส้นทางไฟล์ firmware ที่จำเป็นและ WINC ถูกเปิดในโหมดการเขียนโปรแกรม (network.WINC(mode=...)). อัปเดตการเรียกที่ไม่มีอาร์กิวเมนต์ให้ส่งเส้นทาง (เช่น wlan.fw_update("/winc_19_5_2.bin"))

Commits: fcc3b0b9c

image.find_number() ต้องการ ROI ขนาด 28x28 (behavior)

image.find_number() (LeNet) ตอนนี้ต้องการ ROI ที่มีขนาดพอดี 28x28 ที่อยู่ภายในภาพและเกิดข้อผิดพลาดหากไม่เป็นเช่นนั้น (แทนที่จะทำงานบน ROI ขนาดใดก็ได้/ทั้งภาพ) ส่ง roi=(x, y, 28, 28) อย่างชัดเจน

Commits: 4d09a13f3

เครื่องหมาย z_rotation() ของ AprilTag กลับด้าน (behavior)

z_rotation() ของ AprilTag (และ rotation() ที่เกี่ยวข้อง) ตอนนี้ใช้ระบบพิกัดมือขวา ดังนั้นมุมที่ส่งคืนจึงถูกนิเสธเทียบกับรุ่นก่อนหน้า สคริปต์ที่ขึ้นอยู่กับเครื่องหมายเดิมต้องกลับค่าหรือปรับการคำนวณมุม

Commits: 7673aaf74

รายการตรวจสอบการย้าย

สำหรับการย้ายไปยัง v2.7.0 อย่างสะอาด งานทั่วไปได้แก่:

  1. ปรับ set_auto_gain() เป็น gain_db= + get_gain_db() และจัดการ ValueError (การปรับโครงสร้าง auto-gain)

  2. ปรับ set_auto_exposure() เป็น exposure_us= + get_exposure_us() (การปรับโครงสร้าง auto-exposure)

  3. อัปเดต find_displacement() เป็น displacement object และเปลี่ยนชื่อค่าคงที่ขนาดเฟรม FFT (การปรับโครงสร้าง find_displacement)

  4. ปรับ set_auto_whitebal() เป็น rgb_gain_db= + get_rgb_gain_db() (การปรับโครงสร้าง white-balance) และหยุดตรวจสอบค่าที่ส่งคืนจาก set_hmirror() / set_vflip() (การเปลี่ยนแปลง mirror/flip)

  5. ส่งเส้นทาง firmware ให้กับเครื่องมือ WINC fw_* (การเปลี่ยนแปลงเครื่องมือ WINC)

  6. ส่ง roi ขนาด 28x28 ให้กับ find_number() (การเปลี่ยนแปลง find_number) และปรับการคำนวณมุม AprilTag สำหรับเครื่องหมาย z_rotation() ที่กลับด้าน (การเปลี่ยนแปลง z_rotation)

สคริปต์อื่น ๆ ทั้งหมดทำงานได้โดยไม่ต้องเปลี่ยนแปลง