v2.8.0

v2.8.0 เป็นเวอร์ชันที่มีการอัปเดตครั้งใหญ่ โดยรองรับ OpenMV Cam H7 (STM32H7) พร้อม ตัวเข้ารหัส JPEG แบบฮาร์ดแวร์ และ H7 ADC/DAC, การปรับปรุง API ของ image อย่างครอบคลุม (ความหนาของเส้นและการเติมรูปทรง, การดำเนินการทางคณิตศาสตร์และไบนารี, ฟิลเตอร์ใหม่จำนวนมาก, การหาค่าขีดแบ่งแบบ Otsu), การใช้งาน Thread ใน MicroPython และโมดูล omv สำหรับข้อมูลเวอร์ชัน ลำดับการส่งอาร์กิวเมนต์ของ Python ถูกกำหนดให้เป็นมาตรฐาน และ image.mask_ellipse() ถูกลบออก — อ่านรายละเอียดการเปลี่ยนแปลงที่ทำให้เกิดความไม่เข้ากันด้านล่าง

ไฮไลต์

  • OpenMV Cam H7 — บอร์ด STM32H7 ใหม่พร้อมตัวเข้ารหัส JPEG แบบฮาร์ดแวร์และ H7 ADC / DAC

  • การปรับปรุง image — ความหนาของเส้น, การเติมรูปทรง, draw_arrow() / draw_image(), การดำเนินการทางคณิตศาสตร์และไบนารีครบชุด และฟิลเตอร์ใหม่จำนวนมาก

  • การหาค่าขีดแบ่งแบบ Otsuhistogram.get_threshold() และออบเจ็กต์ Threshold

  • Threading — รองรับโมดูล _thread ของ MicroPython

  • โมดูล omv — ข้อมูลเวอร์ชัน / บอร์ด

  • การเปลี่ยนแปลงที่ทำให้เกิดความไม่เข้ากัน: ลำดับอาร์กิวเมนต์แบบตำแหน่งของ Python มีความเข้มงวดแล้ว และ image.mask_ellipse() ถูกลบออก — ดูรายละเอียดในส่วนการเปลี่ยนแปลงที่ทำให้เกิดความไม่เข้ากัน

คุณลักษณะใหม่

  • OpenMV Cam H7 — รองรับบอร์ด STM32H7 พร้อมตัวเข้ารหัส JPEG แบบฮาร์ดแวร์, H7 ADC และ H7 DAC

  • การวาด — เพิ่ม thickness ของเส้น, fill ของรูปทรง (สี่เหลี่ยม / วงกลม), scale / kerning ของข้อความ, คีย์เวิร์ด mono_space ใน draw_string(), image.draw_arrow() และ image.draw_image() (การวาด sprite / mask)

  • การดำเนินการทางคณิตศาสตร์ — เพิ่ม add(), sub(), mul(), div(), min(), max(), difference(), blend(), replace() (พร้อม hmirror / vflip / mask) และ remove_shadows(); การดำเนินการพื้นฐานรับค่าสเกลาร์/สีที่ใช้กับทุกพิกเซลได้

  • ไบนารี / มอร์โฟโลยี — เพิ่มประเภทภาพไบนารีใหม่และ binary(); การดำเนินการบนเส้นและ erode() / dilate() รับ mask; เพิ่ม open() / close() / top_hat() / black_hat()

  • ฟิลเตอร์ — เพิ่ม cartoon, flood_fill, bilateral, laplacian, ชื่อแทน blur / gaussian_blur และการปรับสมดุลฮิสโตแกรมแบบปรับตัว (histeq(adaptive=, clip_limit=, mask=))

  • สถิติget_statistics() / get_histogram() รับรายการค่าขีดแบ่งสีและ invert; เพิ่ม Otsu histogram.get_threshold() และออบเจ็กต์ Threshold

  • CMSIS CNN — เพิ่ม image.classify_object() พร้อมตัวอย่าง cnn.py (ถูกแทนที่ด้วยโมดูล nn ใน v3.0.0)

  • Threading — เปิดใช้งานโมดูล _thread ของ MicroPython

  • โมดูล omv — เพิ่มข้อมูลเวอร์ชัน (version_string, arch, board_type, board_id); เปิดใช้งานบัส machine I2C4 และฟังก์ชันทางคณิตศาสตร์พิเศษ (erf, gamma, …); เพิ่มตัวอย่าง motor-shield และสคริปต์ตัวอย่างใหม่จำนวนมาก

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

  • นาฬิกาภายนอกของ sensor H7 ถูกลดลงเหลือ 48 MHz (คุณภาพภาพดีขึ้น, FPS ลดลง); คุณภาพ JPEG ระดับต่ำ/สูงสามารถกำหนดค่าได้ตามบอร์ด (และปรับแต่งสำหรับ H7); เพิ่มการกำหนดคุณลักษณะแบบต่อบอร์ดผ่าน imlib_config.h (ฟังก์ชันภาพทั้งหมดยังคงเปิดใช้งานใน firmware มาตรฐาน); อัปเดต MicroPython ที่รวมมา

การแก้ไขข้อผิดพลาด

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

  • แก้ไข image.save() เมื่อไม่มีนามสกุลไฟล์, การแมป gain_db / gain_db_ceiling สำหรับ OV2640 / OV7725 / OV9650 / MT9V034, ค่าเกนที่มากเกินไปใน sharpen(), สัญญาณรบกวนที่ขอบในการดำเนินการมอร์โฟโลยี, การหารด้วยศูนย์ในการดำเนินการบนภาพ และการ crash แบบ stack-smash เมื่อขนาด kernel ของฟิลเตอร์ใหญ่เกินไป (ปัจจุบันแสดงข้อผิดพลาดชัดเจน)

ระบบ:

  • ป้องกันบัฟเฟอร์ USB VCP ด้วย atomic section (ป้องกันข้อมูล serial เสียหาย, #313), แก้ไขการเชื่อมต่อ USB บน Windows, การ mount ระบบไฟล์ flash ภายในเมื่อ SD card ล้มเหลว, ค่า PLLP ของ cpufreq set_frequency() และข้อผิดพลาดในการเขียน firmware ผ่าน bootloader

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

  • OpenMV Cam H7 (STM32H7) — บอร์ดใหม่พร้อมตัวเข้ารหัส JPEG แบบฮาร์ดแวร์และ H7 ADC / DAC

  • machine — เปิดใช้งานบัส I2C4

การเปลี่ยนแปลง API ที่ทำให้เกิดความไม่เข้ากัน

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

การเปลี่ยนแปลงที่ทำให้เกิดความไม่เข้ากันทั้งสองรายการเป็นการเปลี่ยนแปลง เล็กน้อย และส่งผลกระทบเฉพาะสคริปต์ที่ใช้คุณลักษณะที่เกี่ยวข้องเท่านั้น แต่ละ hash ของ commit มีลิงก์ไปยัง diff บน GitHub

ลำดับอาร์กิวเมนต์แบบตำแหน่งของ Python มีความเข้มงวดแล้ว (เล็กน้อย)

การแยกวิเคราะห์อาร์กิวเมนต์ใน Python C-modules (image / sensor / fir / gif / lcd / mjpeg) อ่านอาร์กิวเมนต์แบบตำแหน่งก่อน keyword และล็อกลำดับตำแหน่ง เมื่อรวมกับ keyword argument ใหม่ในเมธอดการวาด (draw_line() / draw_rectangle() / draw_circle() / draw_string() / draw_cross() / draw_keypoints() ที่ได้รับ thickness / fill / scale / size), โค้ดที่ส่งพารามิเตอร์ไม่ตามลำดับตำแหน่ง หรือส่ง color แบบตำแหน่งหลังอาร์กิวเมนต์ใหม่ — ต้องใช้ keyword arguments หรือลำดับตำแหน่งที่ระบุไว้ในเอกสาร

Commits: e0e112468, fc74e70c3

image.mask_ellipse() ถูกลบออก (เล็กน้อย)

image.mask_ellipse() ถูกลบออกแล้ว สคริปต์ที่เรียกใช้ต้องลบการเรียกนั้นออก หรือใช้ ROI / mask image แบบระบุโดยตรงแทน

Commits: d7159fba3

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

ส่งอาร์กิวเมนต์ด้วย keyword (หรือตามลำดับตำแหน่งที่ระบุในเอกสาร) โดยเฉพาะ color ในเมธอดการวาด (การเปลี่ยนแปลงลำดับอาร์กิวเมนต์) และลบการเรียก image.mask_ellipse() ออก (การลบ mask_ellipse) สคริปต์อื่น ๆ ทั้งหมดใช้งานได้โดยไม่ต้องเปลี่ยนแปลง