v3.6.1¶
v3.6.1 เป็นการอัปเดตครั้งใหญ่ที่นำเสนอโมดูล imu (LSM6DS3), ชุด API getter ใหม่ของ sensor พร้อม การหมุนอัตโนมัติที่ขับเคลื่อนด้วย IMU, การแก้ไขมุมมองสี่จุด rotation_corr(), และรองรับ Arduino Portenta H7 พร้อมกล้อง HIMAX HM01B0 และ OV7690 มี API ของ sensor / image บางส่วนที่เปลี่ยนแปลง และ TensorFlow ถูกยกเลิกบน M7 — อ่านการเปลี่ยนแปลงที่ส่งผลกระทบด้านล่าง
ไฮไลต์¶
โมดูล
imu— มาตรวัดความเร่ง / ไจโร / อุณหภูมิ / roll / pitch บน LSM6DS3 (OpenMV 4 / Portenta)Sensor getters + การหมุนอัตโนมัติ —
get_pixformat()/get_framesize()/get_hmirror()/get_vflip()/get_windowing(),set_transpose()/set_auto_rotation(), และการหมุนสแนปช็อตที่ขับเคลื่อนด้วย IMUการแก้ไขมุมมอง —
rotation_corr()รองรับคีย์เวิร์ดfovและcorners(สี่จุด)ฮาร์ดแวร์ใหม่ — Arduino Portenta H7, HIMAX HM01B0, และกล้อง OV7690
การเปลี่ยนแปลงที่ส่งผลกระทบ:
set_pixformat()/set_framesize()ตอนนี้คืนค่าNone,sensor.set_framerate()ถูกลบออก, TensorFlow ถูกยกเลิกบน M7, และlens_corr()/linpolar()ต้องการขนาดคู่ — ดูการเปลี่ยนแปลงที่ส่งผลกระทบ
ฟีเจอร์ใหม่¶
imu— โมดูล IMU ใหม่:imu.acceleration_mg(),imu.angular_rate_mdps(),imu.temperature_c(),imu.roll(),imu.pitch(), และimu.sleep()(LSM6DS3 บน OpenMV 4 / Portenta)Sensor getters — เพิ่ม
sensor.get_pixformat(),get_framesize(),get_hmirror(),get_vflip(),get_windowing(),set_transpose()/get_transpose(), และset_auto_rotation()/get_auto_rotation()การหมุนอัตโนมัติ —
sensor.snapshot()ใช้ IMU เพื่อพลิก / สะท้อน / สลับเปลี่ยนเฟรมเมื่อเปิดใช้งานการหมุนอัตโนมัติrotation_corr()— เพิ่มคีย์เวิร์ดfovและcorners(มุมมองสี่จุด) พร้อมตัวอย่างการแก้ไขมุมมองlcd.init()— เพิ่มอาร์กิวเมนต์คีย์เวิร์ดbgrcollections.deque— เปิดใช้งานในบิลด์ MicroPythonเพิ่มค่าคงที่ id
sensor.OV7690และsensor.HM01B0และตัวอย่างตัวกรองภาพulabแบบ numpy
การเปลี่ยนแปลงและการปรับปรุงอื่น ๆ¶
ปรับปรุงตัวกรองภาพ (median / mode / mean / …) และ
find_circles()และการแก้ไขเลนส์อย่างมีนัยสำคัญ;alloc_extra_fbสามารถจัดสรรไบต์ได้ตามต้องการ; โมเดลการตรวจจับบุคคลถูกสร้างใหม่พร้อม op average-pool ใหม่
การแก้ไขบัก¶
กล้องและเซนเซอร์:
แก้ไข
sleep()ของ OV2640 (ตอนนี้ใช้รีจิสเตอร์ standby COM2 แทนขา power-down), การกำหนดค่าขา FSYNC, ขั้วสัญญาณ HSYNC/VSYNC และที่อยู่/การสแกน I2C ของ HM01B0, GPIO power-down เซนเซอร์ Portenta และขา reset กล้อง, และปิดใช้งานการหมุนอัตโนมัติเมื่อ IMU pitch อยู่ใกล้ 90°/270°
การประมวลผลภาพและระบบ:
แก้ไขบักการตรวจสอบขอบเขตของตัวกรองภาพ, hardfault เมื่อปิดใช้งาน D-cache, การบูตบนบอร์ดที่ไม่มี SD card, บักของ
tf.load()load_to_fb, stack overflow ในการตรวจจับบุคคล (H7 stack ยกขึ้นเป็น ≥12 KB), และออฟเซ็ต USB descriptor สำหรับโหมดความเร็วสูงบน OpenMV 4 Plus
ฮาร์ดแวร์และการรองรับบอร์ด¶
Arduino Portenta H7 — การเริ่มต้นใช้งานบอร์ดครั้งแรก (การกำหนดค่า clock/OSC/HSE ของ STM32H747, CMSIS headers, ADC, SDRAM, Arduino USB PID)
HIMAX HM01B0 — ไดรเวอร์กล้องขาวดำใหม่ (Bayer, clock oscillator ภายนอก)
OV7690 — ไดรเวอร์กล้องใหม่
LSM6DS3 IMU — OpenMV 4 / Portenta
การเปลี่ยนแปลง API ที่ส่งผลกระทบ¶
การเปลี่ยนแปลง API ที่มองเห็นได้ระหว่าง v3.6.0 และ v3.6.1 ขอบเขต: Python C-modules ใน modules/ และไลบรารี Python ใน scripts/libraries/
การเปลี่ยนแปลงแต่ละอย่างถูกติดแท็กตามผลกระทบ:
minor — API แคบ; ส่งผลกระทบเฉพาะสคริปต์ที่ใช้งาน
behavior — API เหมือนเดิม ผลลัพธ์ต่างกัน; ตรวจสอบสคริปต์ที่ปรับแต่งแล้วอีกครั้ง
การเปลี่ยนแปลงถูกจัดกลุ่มตามผลกระทบตามลำดับนั้น หากต้องการพอร์ตโค้ดเพียงอย่างเดียว ข้ามไปยัง รายการตรวจสอบการย้าย ที่ท้ายหน้า แต่ละ commit hash เชื่อมต่อไปยัง diff บน GitHub
sensor.set_framerate() ถูกลบออก (minor)¶
stub sensor.set_framerate() ที่ไม่ทำงานถูกลบออก; การเรียกใช้งานตอนนี้จะเกิด AttributeError ให้ลบการเรียกใช้งานออกและควบคุม timing เฟรมผ่าน framesize/exposure แทน (set_framerate() ที่ทำงานได้ถูกนำกลับมาใน v4.0.2)
Commits: 705e98f91
TensorFlow ถูกยกเลิกบน OpenMV Cam M7 (minor)¶
TensorFlow (โมดูล tf) ถูกปิดใช้งานบน OpenMV Cam M7 / OpenMV 3 (ไม่พอดีอีกต่อไป) import tf บน M7 จะล้มเหลว — ใช้กล้องคลาส H7 สำหรับ TensorFlow (tf ถูกเปิดใช้งานใหม่บน F7 ใน v3.6.3)
Commits: 2ae875077
set_pixformat() / set_framesize() คืนค่า None (behavior)¶
sensor.set_pixformat() และ sensor.set_framesize() ตอนนี้คืนค่า None แทน True, และรูปแบบพิกเซลที่ไม่รองรับจะเกิด ValueError แทน assertion โค้ดที่ตรวจสอบค่าที่ส่งกลับ (เช่น if sensor.set_pixformat(...):) ต้องหยุดทำเช่นนั้น และโค้ดที่ catch AssertionError สำหรับรูปแบบที่ไม่รองรับต้อง catch ValueError แทน
Commits: f314ac4e7
lens_corr() / linpolar() / logpolar() ต้องการขนาดคู่ (behavior)¶
image.lens_corr() และ image.linpolar() / image.logpolar() ต้องการความกว้างและความสูงของภาพเป็นจำนวนคู่ และจะเกิดข้อผิดพลาดหากขนาดเป็นเลขคี่ ให้ crop หรือ resize ภาพให้เป็นขนาดคู่ก่อนเรียกเมธอดเหล่านี้
รายการตรวจสอบการย้าย¶
สำหรับการพอร์ตที่สะอาดไปยัง v3.6.1 งานทั่วไปคือ:
ลบการเรียก
sensor.set_framerate()(การลบ set_framerate)ย้ายงาน TensorFlow ออกจาก OpenMV Cam M7 (การเปลี่ยนแปลง M7 TensorFlow)
หยุดพึ่งพาค่าที่ส่งกลับของ
set_pixformat()/set_framesize()และ catchValueErrorสำหรับรูปแบบพิกเซลที่ไม่รองรับ (การเปลี่ยนแปลงค่าที่ส่งกลับ)ตรวจสอบให้แน่ใจว่าขนาดภาพเป็นเลขคู่ก่อน
lens_corr()/linpolar()/logpolar()(ข้อกำหนดขนาดคู่)
สคริปต์อื่น ๆ ทั้งหมดทำงานได้โดยไม่มีการเปลี่ยนแปลง