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(), การดำเนินการทางคณิตศาสตร์และไบนารีครบชุด และฟิลเตอร์ใหม่จำนวนมากการหาค่าขีดแบ่งแบบ Otsu —
histogram.get_threshold()และออบเจ็กต์ThresholdThreading — รองรับโมดูล
_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; เพิ่ม Otsuhistogram.get_threshold()และออบเจ็กต์ThresholdCMSIS CNN — เพิ่ม
image.classify_object()พร้อมตัวอย่างcnn.py(ถูกแทนที่ด้วยโมดูลnnใน v3.0.0)Threading — เปิดใช้งานโมดูล
_threadของ MicroPythonโมดูล
omv— เพิ่มข้อมูลเวอร์ชัน (version_string,arch,board_type,board_id); เปิดใช้งานบัสmachineI2C4 และฟังก์ชันทางคณิตศาสตร์พิเศษ (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 ของ
cpufreqset_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 หรือลำดับตำแหน่งที่ระบุไว้ในเอกสาร
image.mask_ellipse() ถูกลบออก (เล็กน้อย)¶
image.mask_ellipse() ถูกลบออกแล้ว สคริปต์ที่เรียกใช้ต้องลบการเรียกนั้นออก หรือใช้ ROI / mask image แบบระบุโดยตรงแทน
Commits: d7159fba3
รายการตรวจสอบการย้าย¶
ส่งอาร์กิวเมนต์ด้วย keyword (หรือตามลำดับตำแหน่งที่ระบุในเอกสาร) โดยเฉพาะ color ในเมธอดการวาด (การเปลี่ยนแปลงลำดับอาร์กิวเมนต์) และลบการเรียก image.mask_ellipse() ออก (การลบ mask_ellipse) สคริปต์อื่น ๆ ทั้งหมดใช้งานได้โดยไม่ต้องเปลี่ยนแปลง