v3.7.0¶
v3.7.0 เป็นรุ่นใหญ่ เพิ่มโมดูล audio (ไมโครโฟน PDM ของ Portenta H7) พร้อม API คอลแบ็กแบบ non-blocking ใหม่, โมดูลการจดจำเสียงพูด TensorFlow micro_speech, คอนโทรลเลอร์ LCD parallel-RGB ใหม่ (พร้อมเอาต์พุต HDMI และการสัมผัส FT5X06), เมธอด image.flush() พร้อมค่าคงที่รูปแบบพิกเซล และ pipeline การปรับขนาด image.draw_image() ที่เขียนใหม่ ไลบรารีช่วยเหลือแบบ legacy บางส่วนและเมธอด image ถูกลบออก และคณิตศาสตร์ yuv_to_* มีการเปลี่ยนแปลง — อ่านการเปลี่ยนแปลงที่ทำให้เกิดความเสียหายด้านล่าง
Highlights¶
โมดูล
audio— การบันทึกไมโครโฟน PDM บนบอร์ด Portenta H7 พร้อม APIstart_streaming(callback)แบบ non-blockingmicro_speech— โมดูลการจดจำเสียงพูด TensorFlow micro-speechคอนโทรลเลอร์ LCD ใหม่ — รองรับการแสดงผล parallel RGB, เอาต์พุต HDMI (TFP410) และการสัมผัส FT5X06
image.draw_image()— เขียนใหม่พร้อม pipeline การปรับขนาด/alpha/palette แบบครบถ้วน (x_scale/y_scale/hint/color_palette…)image.flush()พร้อมค่าคงที่รูปแบบพิกเซล (image.BINARY/GRAYSCALE/RGB565/YUV422/BAYER/JPEG)ความเสียหาย: ไลบรารีช่วยคณิตศาสตร์แบบ legacy และเมธอด image บางส่วนถูกลบออก
draw_image()/ LCD APIs ถูกปรับใหม่ และyuv_to_*ไม่ลบ 128 อีกต่อไป — ดูการเปลี่ยนแปลงที่ทำให้เกิดความเสียหาย
New features¶
audio— โมดูลaudioใหม่สำหรับ Portenta H7 สำหรับการบันทึกไมโครโฟน PDM:audio.init(),audio.start_streaming(callback)แบบ non-blocking และaudio.stop_streaming()(ความถี่ระบุเป็น Hz)micro_speech— โมดูลใหม่พร้อมคลาสMicroSpeech,audio_callback()และmicro_speech()สำหรับการจดจำเสียงพูด TensorFlow;listen()ใช้ค่าเฉลี่ยแบบ running-window และรับ keywordfilterเพื่อจำกัดผลลัพธ์ให้อยู่ในรายการป้ายกำกับLCD — คอนโทรลเลอร์ LCD ใหม่พร้อมรองรับการแสดงผล parallel RGB, ประเภท
LCD_NONE/LCD_SHIELD/LCD_DISPLAY, ค่าคงที่ขนาดเฟรมหลายค่า,triple_buffer/framesize/refresh/bgr/deinit,displayที่ขยายใหญ่ขึ้น, เอาต์พุต HDMI ผ่าน TFP410 และรองรับหน้าจอสัมผัส FT5X06image.flush()— เพิ่มเมธอดimage.flush()และค่าคงที่รูปแบบพิกเซล (image.BINARY/GRAYSCALE/RGB565/YUV422/BAYER/JPEG)image.draw_image()— เขียนใหม่พร้อม pipeline การปรับขนาดใหม่:x_scale/y_scale/x_size/y_size,rgb_channel,alpha,color_palette,alpha_paletteและhintพร้อมค่าคงที่image.AREA/BILINEAR/BICUBIC/CENTER/EXTRACT_RGB_CHANNEL_FIRST/APPLY_COLOR_PALETTE_FIRSTและตัวอย่างการ alpha-blending / color-table / scaling ใหม่ImageReader.next_frame()ได้รับ keywordpauseเพื่อปิดใช้งานการหน่วงการเล่นแบบ real-timeเพิ่มตัวอย่าง audio ของ Portenta (
audio_fft.py,micro_speech.py) และตัวอย่าง ExtInt wake-from-stop
Other changes and improvements¶
ตัวอย่างในตัวถูกจัดระเบียบใหม่ภายใต้
scripts/examples/Arduino/; บัฟเฟอร์เฟรมตอนนี้อัปเดตทันทีหลังจากโหลด/สร้างภาพด้วยcopy_to_fb=True(ไม่ต้อง flush เอง); heap ของ Portenta ถูกลดลงเล็กน้อยเพื่อให้มีพื้นที่สำหรับสถานะ driver แบบ static มากขึ้น
Bug fixes¶
Camera and imaging:
แก้ไขการสลับแดง/น้ำเงิน (ลำดับไบต์ RGB565) ในภาพที่บันทึก, การปัดเศษ DMA2D draw เพื่อให้ตรงกับโค้ด draw อื่นๆ, การเสียหายของ
fb_allocในการจัดสรรแบบ recursive (find_blobs()), และปิดการใช้งานtop_hat()/black_hat()หลังจากเปิดใช้งานทั้ง binary และ math ops
Display and audio:
แก้ไขเอาต์พุต LCD shield และโหมด mono audio 1 channel ของ Portenta
Portenta:
แก้ไขปัญหา Ethernet/SDRAM (ดึง
rst_ethให้สูง) และแก้ไขการตั้งค่า timing ของ SDRAM
Hardware and board support¶
Arduino Portenta H7 — การบันทึก audio ด้วยไมโครโฟน PDM บนบอร์ด (SAI / PDM2PCM)
LCD — คอนโทรลเลอร์การแสดงผล parallel-RGB ใหม่ (เปิดใช้งาน LTDC ใน H7 build), เอาต์พุต HDMI ผ่าน TFP410 และรองรับ LCD หน้าจอสัมผัส FT5X06
Breaking API changes¶
การเปลี่ยนแปลง API ที่ผู้ใช้มองเห็นได้ระหว่าง v3.6.9 และ v3.7.0 ขอบเขต: Python C-modules ใน modules/ และ Python libraries ใน scripts/libraries/
การเปลี่ยนแปลงแต่ละอย่างถูกแท็กด้วยผลกระทบ:
minor — API แคบ; มีผลกระทบเฉพาะสคริปต์ที่ใช้งาน
behavior — API เดิม ผลลัพธ์ต่างกัน ตรวจสอบสคริปต์ที่ปรับแต่งอีกครั้ง
การเปลี่ยนแปลงถูกจัดกลุ่มตามผลกระทบในลำดับนั้น หากต้องการพอร์ตโค้ดของคุณ ไปที่ migration checklist ที่ท้ายเอกสาร แต่ละ commit hash เชื่อมโยงไปยัง diff บน GitHub
ลบไลบรารีช่วยคณิตศาสตร์แบบ legacy ออกแล้ว (minor)¶
ไลบรารีช่วยเหลือ mtx, rv, ulinalg, umatrix และ vec ถูกลบออกจาก scripts/libraries เพื่อสนับสนุน ulab สคริปต์ที่ import สิ่งเหล่านี้จะล้มเหลวและต้องพอร์ตไปยัง ulab
Commits: 1f7da9272
ลบ remove_shadows() / chrominvar() / illuminvar() แล้ว (minor)¶
image.remove_shadows(), image.chrominvar() และ image.illuminvar() ถูกลบออกโดยไม่มีตัวแทน สคริปต์ที่เรียกเมธอดเหล่านี้ต้องลบการเรียกออก
Commits: 3173c2bb3
ปรับ signature ของ image.draw_image() ใหม่ (minor)¶
image.draw_image() ถูกเขียนใหม่บน pipeline การปรับขนาดใหม่ อาร์กิวเมนต์ตำแหน่ง alpha / scale เดิมและลำดับตำแหน่งก่อนหน้าไม่ใช้แล้ว ให้ใช้รูปแบบ keyword ใหม่ (x_scale= / y_scale= หรือ x_size= / y_size=, alpha=, color_palette=, hint= …)
Commits: 3439f8824
เขียน LCD module ใหม่ (minor)¶
โมดูล lcd ถูกเขียนใหม่สำหรับคอนโทรลเลอร์การแสดงผลใหม่ lcd.init() ตอนนี้รับ type การแสดงผล (LCD_NONE / LCD_SHIELD / LCD_DISPLAY) และ keyword arguments ใหม่ และพื้นผิว constant / API ถูกจัดระเบียบใหม่อย่างมาก สคริปต์ shield เดิมส่วนใหญ่ยังคงทำงานได้ แต่ค่าเริ่มต้นและพฤติกรรมมีการเปลี่ยนแปลง — ตรวจสอบสคริปต์ LCD กับ API type / framesize ใหม่
Commits: 185538207
yuv_to_* ไม่ลบ 128 อีกต่อไป (behavior)¶
image.yuv_to_binary() / yuv_to_grayscale() / yuv_to_rgb() / yuv_to_lab() ตอนนี้ถือว่า element Y ของ tuple เป็นค่า unsigned 0–255 แทนที่จะลบ 128 ผู้เรียกต้องส่ง Y โดยไม่มี bias −128 เดิมเพื่อให้ได้สีเหมือนเดิม
Commits: dcf141192
Migration checklist¶
สำหรับการพอร์ตไปยัง v3.7.0 อย่างราบรื่น งานทั่วไปคือ:
พอร์ตการใช้งาน
mtx/rv/ulinalg/umatrix/vecไปยังulab(การลบไลบรารีคณิตศาสตร์)ลบการเรียก
image.remove_shadows()/chrominvar()/illuminvar()(เมธอด image ที่ถูกลบ)อัปเดตการเรียก
image.draw_image()เป็น signature keyword ใหม่ (การปรับ draw_image ใหม่)ตรวจสอบสคริปต์ LCD กับ API
type/framesizeของlcdใหม่ (การเขียน LCD ใหม่)ลบ bias −128 เมื่อส่ง Y ไปยัง
yuv_to_*(การเปลี่ยนแปลง yuv_to_*)
สคริปต์อื่นๆ ทั้งหมดทำงานได้โดยไม่ต้องแก้ไข