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

  • โมดูล imageImage() / HaarCascade() / ตัวบ่งชี้ลักษณะตอนนี้อยู่ในโมดูล image แล้ว

  • time.clock — นาฬิกาอัตราเฟรมย้ายไปอยู่ในโมดูล time

  • Haar cascades ในตัวHaarCascade("frontalface") / HaarCascade("eye") (ไม่ต้องใช้ไฟล์)

  • รองรับบอร์ด OpenMV 2 และการดีบักผ่าน USB-CDC

  • เปลี่ยนแปลงครั้งใหญ่: โครงสร้างโมดูลถูกนิยามใหม่ — ดูการเปลี่ยนแปลงที่ไม่เข้ากัน

ฟีเจอร์ใหม่

  • Image — เพิ่ม Image.get_pixel(x, y) / set_pixel() และการเข้าถึงพิกเซลด้วย subscript img[i]; Haar cascades บนแฟลชในตัว (HaarCascade("frontalface") / HaarCascade("eye")) และคีย์เวิร์ด stages= สำหรับจำกัดขั้นตอน cascade; draw_string() ใช้งานได้กับภาพระดับสีเทา

  • Sensor — เพิ่ม sensor.set_colorbar(), sensor.set_saturation() และขนาดเฟรม QQVGA2

  • mlxmlx.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 งานทั่วไปที่ต้องทำ:

  1. แทนที่โมดูล gpio / led / spi / uart / socket / wlan / file / select แบบกำหนดเองด้วย MicroPython pyb / machine (การลบโมดูลกำหนดเอง)

  2. import image และเติม image. นำหน้า Image() / HaarCascade() (การย้าย image module)

  3. ใช้ import time และ clock = time.clock() (การย้าย clock)

  4. เพิ่ม /flash / /sd ลงใน sys.path อย่างชัดเจน หากคุณ import โมดูลช่วยเหลือด้วยชื่อเปล่า (การเปลี่ยน sys.path)

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