v1.1.0¶
v1.1.0 เป็นรุ่นที่วางรากฐานสถาปัตยกรรม: ยกเลิกโมดูลอุปกรณ์ต่อพ่วงแบบกำหนดเองยุคแรกเพื่อหันมาใช้ MicroPython built-ins มาตรฐาน ย้าย imaging API ไปยังโมดูล image และนาฬิกาอัตราเฟรมไปยัง time พร้อมเพิ่ม Haar cascades ในตัว, get_pixel() / set_pixel(), รองรับบอร์ด OpenMV 2 และการดีบักผ่าน USB-CDC ถือเป็นรุ่นที่มีการเปลี่ยนแปลงครั้งใหญ่ในด้านการกำหนด API — โปรดอ่านการเปลี่ยนแปลงที่ไม่เข้ากันด้านล่าง
ไฮไลต์¶
MicroPython built-ins — โมดูล
gpio/led/spi/socket/wlan/uart/file/selectแบบกำหนดเองถูกลบออก แทนที่ด้วยpyb/machineของ MicroPythonโมดูล
image—Image()/HaarCascade()/ ตัวบ่งชี้ลักษณะตอนนี้อยู่ในโมดูลimageแล้วtime.clock— นาฬิกาอัตราเฟรมย้ายไปอยู่ในโมดูลtimeHaar cascades ในตัว —
HaarCascade("frontalface")/HaarCascade("eye")(ไม่ต้องใช้ไฟล์)รองรับบอร์ด OpenMV 2 และการดีบักผ่าน USB-CDC
เปลี่ยนแปลงครั้งใหญ่: โครงสร้างโมดูลถูกนิยามใหม่ — ดูการเปลี่ยนแปลงที่ไม่เข้ากัน
ฟีเจอร์ใหม่¶
Image — เพิ่ม
Image.get_pixel(x, y)/set_pixel()และการเข้าถึงพิกเซลด้วย subscriptimg[i]; Haar cascades บนแฟลชในตัว (HaarCascade("frontalface")/HaarCascade("eye")) และคีย์เวิร์ดstages=สำหรับจำกัดขั้นตอน cascade;draw_string()ใช้งานได้กับภาพระดับสีเทาSensor — เพิ่ม
sensor.set_colorbar(),sensor.set_saturation()และขนาดเฟรมQQVGA2mlx—mlx.read(type)พร้อมเอาต์พุตmlx.RAINBOW/mlx.GRAYSCALEการดีบัก — รองรับการดีบักผ่าน USB CDC, การสอบถามเวอร์ชัน firmware ด้วย
fw_version(), firmware แยกต่อบอร์ด (OpenMV 1 / OpenMV 2), สคริปต์ self-test / colorbar; ข้อผิดพลาดร้ายแรง/การ parse จะถูกบันทึกลงแฟลช
การเปลี่ยนแปลงและการปรับปรุงอื่นๆ¶
หน่วยความจำไม่พอจะแสดง
MemoryErrorแทนOSError; สคริปต์ทำงานด้วยการ re-raise exception เพื่อให้ข้อผิดพลาดแสดงแทนการ crash; อัตราบอด serial ปรับได้ (ค่าเริ่มต้น 921600); ระบบไฟล์บนแฟลชขนาดใหญ่ขึ้น; pixel clock ของเซนเซอร์ลดลงเป็น 54 MHz เพื่อความเสถียรในการจับภาพ;sensor.reset()พึ่งพาการ soft reset ของเซนเซอร์เท่านั้น
การแก้ไขบัก¶
แก้ไข template matching,
find_features()ที่ซ้ำวัตถุแรก, การเข้าถึง SCCB/I2C register แบบ atomic, การตรวจจับ SD-card, การ mapping พิน soft-I2C, ความแม่นยำของfast_cbrtf/ LAB color และการใช้หน่วยความจำของ integral-image / median-filter บน OpenMV 1 / 2
ฮาร์ดแวร์และการรองรับบอร์ด¶
รองรับบอร์ด OpenMV 2 (STM32F427) (และการออกแบบฮาร์ดแวร์ OpenMV 3); MCO ใช้เป็น sensor clock บน OpenMV 2
การเปลี่ยนแปลง API ที่ไม่เข้ากัน¶
การเปลี่ยนแปลง API ที่ผู้ใช้มองเห็นได้ระหว่าง v1.0.3-beta และ v1.1.0 ขอบเขต: Python C-modules ใน modules/ และไลบรารี Python ใน scripts/libraries/
การเปลี่ยนแปลงแต่ละรายการถูกระบุด้วยผลกระทบ:
major — ส่งผลกระทบต่อสคริปต์ส่วนใหญ่ที่ใช้ฟีเจอร์นั้น; คุณจำเป็นต้องแก้ไขโค้ด
behavior — API เหมือนเดิม แต่ผลลัพธ์ต่างออกไป; ตรวจสอบสคริปต์ที่ปรับค่าไว้แล้วอีกครั้ง
การเปลี่ยนแปลงถูกจัดกลุ่มตามผลกระทบตามลำดับนั้น หากต้องการแก้ไขโค้ดเพียงอย่างเดียว ให้ข้ามไปยัง migration checklist ที่ท้ายเอกสาร แต่ละ commit hash มีลิงก์ไปยัง diff บน GitHub
ลบโมดูลอุปกรณ์ต่อพ่วงแบบกำหนดเอง (major)¶
โมดูล clock / file / gpio / led / select / socket / spi / wlan / uart แบบกำหนดเองในยุคแรกถูกลบออก แทนที่ด้วยอุปกรณ์ต่อพ่วง pyb / machine ที่มีในตัว MicroPython โปรดแก้ไขสคริปต์ให้ใช้ค่าเทียบเท่า MicroPython มาตรฐาน (เช่น pyb.Pin / pyb.LED / pyb.SPI / pyb.UART)
Commits: 6d2fafa94
ย้าย imaging API ไปยังโมดูล image (major)¶
Image(), HaarCascade() และฟังก์ชันบันทึก/โหลด descriptor ไม่ใช่ builtin ทั่วไปอีกต่อไป — ตอนนี้อยู่ในโมดูล image ใหม่ สคริปต์ต้องใช้ import image และเรียก image.Image / image.HaarCascade()
Commits: 54288c535
ย้ายนาฬิกาอัตราเฟรมไปยัง time (major)¶
โมดูล clock แบบ standalone ถูกลบออก; นาฬิกาอัตราเฟรมตอนนี้อยู่ใน time ให้ใช้ import time และ clock = time.clock() — object ที่ได้คืนมายังคงมี .tick() / .fps() / .avg() / .reset()
Commits: a8928ca3b
/flash และ /sd ไม่ถูกเพิ่มใน sys.path อัตโนมัติอีกต่อไป (behavior)¶
ป้ายกำกับ volume / root directory ถูกแก้ไข และ /flash กับ /sd ไม่ถูก append เข้า sys.path อัตโนมัติอีกต่อไป สคริปต์ที่ import โมดูลช่วยเหลือด้วยชื่อเปล่าจากตำแหน่งเหล่านั้นต้องเพิ่ม path อย่างชัดเจน (หรือวางโมดูลในตำแหน่งที่ค้นพบได้)
Commits: 09e77b5da
Migration checklist¶
สำหรับการแก้ไขให้เข้ากับ v1.1.0 งานทั่วไปที่ต้องทำ:
แทนที่โมดูล
gpio/led/spi/uart/socket/wlan/file/selectแบบกำหนดเองด้วย MicroPythonpyb/machine(การลบโมดูลกำหนดเอง)import imageและเติมimage.นำหน้าImage()/HaarCascade()(การย้าย image module)ใช้
import timeและclock = time.clock()(การย้าย clock)เพิ่ม
/flash//sdลงในsys.pathอย่างชัดเจน หากคุณ import โมดูลช่วยเหลือด้วยชื่อเปล่า (การเปลี่ยน sys.path)
สคริปต์อื่นๆ ทั้งหมดทำงานได้โดยไม่ต้องเปลี่ยนแปลง