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(), keywordgain_db_ceilingบนset_auto_gain(), รองรับhmirror/vflipของ MT9V034 และsensor.alloc_extra_fb()/sensor.dealloc_extra_fb()สำหรับบัฟเฟอร์เฟรมพิเศษใน RAMImage — เพิ่ม
remove_shadows(),min()/max()(การเปรียบเทียบเฟรม),get_similarity()(SSIM) พร้อมตัวอย่างความคล้ายคลึงเชิงโครงสร้าง,chrominvar()/illuminvar(),find_rotscale(),linpolar()/logpolar(), keyword threshold / offset / invert บน adaptive filtersmean()/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()ได้รับ keywordarea_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,pydfuclear-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 ใหม่)
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 อย่างสะอาด งานทั่วไปได้แก่:
ปรับ
set_auto_gain()เป็นgain_db=+get_gain_db()และจัดการValueError(การปรับโครงสร้าง auto-gain)ปรับ
set_auto_exposure()เป็นexposure_us=+get_exposure_us()(การปรับโครงสร้าง auto-exposure)อัปเดต
find_displacement()เป็น displacement object และเปลี่ยนชื่อค่าคงที่ขนาดเฟรม FFT (การปรับโครงสร้าง find_displacement)ปรับ
set_auto_whitebal()เป็นrgb_gain_db=+get_rgb_gain_db()(การปรับโครงสร้าง white-balance) และหยุดตรวจสอบค่าที่ส่งคืนจากset_hmirror()/set_vflip()(การเปลี่ยนแปลง mirror/flip)ส่งเส้นทาง firmware ให้กับเครื่องมือ WINC
fw_*(การเปลี่ยนแปลงเครื่องมือ WINC)ส่ง
roiขนาด 28x28 ให้กับfind_number()(การเปลี่ยนแปลง find_number) และปรับการคำนวณมุม AprilTag สำหรับเครื่องหมายz_rotation()ที่กลับด้าน (การเปลี่ยนแปลง z_rotation)
สคริปต์อื่น ๆ ทั้งหมดทำงานได้โดยไม่ต้องเปลี่ยนแปลง