v2.5.0

v2.5.0 เป็นรุ่นที่เน้นการประมวลผลภาพอย่างเต็มรูปแบบ โดยเพิ่ม find_rects(), find_circles(), get_regression() (การปรับเส้นถดถอย), find_number() (การจดจำตัวเลขด้วย LeNet), คลาสสตรีม ImageWriter / ImageReader, sensor.flush() / width() / height() และรองรับ pyb.RTC การโหลดภาพตอนนี้ใช้บัฟเฟอร์เฟรมเป็นพื้นฐาน — โปรดอ่านรายละเอียดการเปลี่ยนแปลงที่ทำให้โค้ดเก่าใช้งานไม่ได้ด้านล่าง

ไฮไลท์

  • image.find_rects() — ตัวตรวจจับรูปสี่เหลี่ยม / รูปสี่ด้านพร้อมเอาต์พุตมุม

  • image.find_circles() — การตรวจจับวงกลมด้วย Hough

  • image.get_regression() — การปรับเส้นด้วยกำลังสองน้อยที่สุดและแบบ Robust (Theil-Sen)

  • image.find_number() — การจดจำตัวเลขด้วย LeNet

  • ImageWriter / ImageReader — บันทึกและเล่นสตรีมภาพ

  • รองรับ pyb.RTC พร้อมกับ sensor.flush() / sensor.width() / sensor.height()

  • Breaking: การโหลดภาพตอนนี้ใช้บัฟเฟอร์เฟรมเป็นพื้นฐานและจะเกิดข้อผิดพลาดหากภาพมีขนาดใหญ่เกินไป — ดูรายละเอียดการเปลี่ยนแปลงที่ส่งผลกระทบ

ฟีเจอร์ใหม่

  • การตรวจจับลักษณะเด่น — เพิ่ม image.find_rects() (ตัวตรวจจับ AprilTag quad; วัตถุ rect พร้อม x / y / w / h / corners / magnitude), image.find_circles() (Hough), image.get_regression() (การปรับเส้นด้วยกำลังสองน้อยที่สุด + Theil-Sen robust) และ image.find_number() (การจดจำตัวเลขด้วย LeNet) พร้อมสคริปต์ตัวอย่างสำหรับแต่ละฟังก์ชัน

  • มุมของผลลัพธ์ — เพิ่มแอตทริบิวต์ corners ให้กับวัตถุผลลัพธ์ QR code / AprilTag / data-matrix / barcode

  • สตรีมภาพ — เพิ่มคลาส image.ImageWriter / image.ImageReader (รูปแบบ chunk ที่จัดตำแหน่ง 16 bytes) พร้อมตัวอย่าง image_writer.py / image_reader.py

  • Sensor — เพิ่ม sensor.flush() (ส่งบัฟเฟอร์เฟรมไปยัง IDE โดยไม่ต้องสแนปช็อต) และ sensor.width() / sensor.height()

  • pyb.RTC — เปิดใช้งานการรองรับ RTC พร้อมตัวอย่าง rtc.py

  • เพิ่ม Haar cascade สำหรับหน้าแมวและตัวอย่าง Servo-Shield (PCA9685) โดยเครื่องมือ host openmv-cascade.py รองรับรูปแบบ OpenCV XML cascade ใหม่แล้ว

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

  • บัฟเฟอร์เฟรมได้รับการปรับโครงสร้างใหม่เพื่อให้เมธอด copy_to_fb ของภาพอัปเดตการแสดงผลตัวอย่างใน IDE; เส้นทาง HaarCascade() ไม่ต้องมี / นำหน้าอีกต่อไป (ระบบตรวจจับอัตโนมัติว่าเป็นในตัวหรือไฟล์); การบันทึก GIF/MJPEG รองรับ VGA แล้ว (และ BAYER GIF); ไฟล์ README.txt ในตัวถูกอัปเดตและไฟล์ไดรเวอร์ openmv.inf จะไม่ถูกสร้างบนระบบไฟล์ใหม่อีกต่อไป

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

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

  • แก้ไขการสะสมคะแนนของ find_circles(), ออฟเซ็ต rho ของ get_regression() เมื่อใช้กับ ROI และหน่วยความจำรั่ว, การรวมเซกเมนต์ของ find_lines(), การเฉลี่ยมุมและขอบเขตสีค่าเริ่มต้น (ที่จำกัดน้อยที่สุด) ของ find_blobs(), ความเสถียรของการเรียงลำดับ ORB keypoint / การจัดลำดับ descriptor และ matched-flag และการโหลด Haar cascade แบบ buffered (การอ่านที่ไม่จัดตำแหน่ง)

ระบบ:

  • เปิดใช้งาน pyb Servo 3 (P9) (#256), แก้ไขการกำหนดค่า RTC, เพิ่ม timeout ของอักขระ UART (#240) และแก้ไขแฟลก "enabled" ของบัฟเฟอร์เฟรม sensor ที่ยังไม่ถูกกำหนดค่าเริ่มต้น

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

  • รองรับ pyb.RTC และ pyb Servo 3 (P9); ตัวอย่าง Servo-Shield (PCA9685)

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

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

การเปลี่ยนแปลงนี้เป็นการเปลี่ยนแปลง พฤติกรรม (API เดิม ผลลัพธ์ต่างออกไป) — ตรวจสอบสคริปต์ที่ได้รับผลกระทบอีกครั้ง แต่ละ hash ของ commit เชื่อมโยงไปยัง diff บน GitHub

การโหลดภาพใช้บัฟเฟอร์เฟรมเป็นพื้นฐาน (พฤติกรรม)

image.Image / การโหลดภาพตอนนี้คัดลอกภาพที่โหลดไปยังบัฟเฟอร์เฟรมหลักและเกิดข้อผิดพลาดหากภาพมีขนาดใหญ่เกินไปที่จะใส่ได้ การโหลดที่เคยสำเร็จไปยัง heap buffer อาจล้มเหลวได้ตอนนี้ — ตรวจสอบให้แน่ใจว่าภาพที่โหลดพอดีกับบัฟเฟอร์เฟรม (หรือจัดการกับข้อผิดพลาดใหม่นี้)

Commits: 87d53385a

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

ตรวจสอบให้แน่ใจว่าภาพที่โหลดพอดีกับบัฟเฟอร์เฟรม (หรือดักจับข้อผิดพลาด "image too large" ใหม่) ในที่ที่คุณเคยพึ่งพาการโหลดภาพด้วย heap (การเปลี่ยนแปลงการโหลดภาพ) สคริปต์อื่น ๆ ทั้งหมดทำงานได้โดยไม่ต้องเปลี่ยนแปลง