v4.5.1¶
v4.5.1 เพิ่มคำใบ้การวางแนว/อัตราส่วนภาพสำหรับการวาด, การโหลดภาพโดยตรงจาก file path, GC2145 wide field-of-view ioctl และ API ตัวควบคุมแบ็กไลต์ใหม่ นอกจากนี้ยังปรับปรุง constructor Image(), API display และการแยกวิเคราะห์อาร์กิวเมนต์ของโมดูล — อ่านการเปลี่ยนแปลงที่ไม่รองรับย้อนหลังด้านล่าง
ไฮไลต์¶
คำใบ้การวาด —
draw_image()ได้รับคำใบ้การวางแนว (HMIRROR/VFLIP/TRANSPOSE,ROTATE_90/180/270) และการปรับขนาดตามอัตราส่วน (SCALE_ASPECT_KEEP/EXPAND/IGNORE)โหลดภาพจากดิสก์ —
draw_image()/display.write()รับ string ของ file pathการควบคุมแบ็กไลต์ — คลาส
DACBacklight/PWMBacklightใหม่และอาร์กิวเมนต์backlight=สำหรับการแสดงผลการเปลี่ยนแปลงที่ไม่รองรับย้อนหลัง: constructor
Image(), APIdisplayและการแยกวิเคราะห์อาร์กิวเมนต์ของโมดูลเปลี่ยนไป — ดูการเปลี่ยนแปลงที่ไม่รองรับย้อนหลัง
ฟีเจอร์ใหม่¶
คำใบ้การวางแนว
draw_image()—image.HMIRROR,image.VFLIP,image.TRANSPOSEรวมถึงimage.ROTATE_90/ROTATE_180/ROTATE_270ที่ใช้งานสะดวกคำใบ้อัตราส่วนภาพ
draw_image()—image.SCALE_ASPECT_KEEP/SCALE_ASPECT_EXPAND/SCALE_ASPECT_IGNOREสำหรับ fit / expand / stretchค่าคงที่ palette —
image.PALETTE_RAINBOWและimage.PALETTE_IRONBOW(ย้ายเข้าไปในโมดูล image)Wide field of view — ioctls
sensor.IOCTL_SET_FOV_WIDE/IOCTL_GET_FOV_WIDEใหม่ (บน GC2145 ขยายสเกลเซนเซอร์ได้สูงสุด 5x)โหลดจากดิสก์ —
draw_image()และdisplay.write()รับ string ของ file path ของภาพต้นทาง โหลดโดยตรงจากที่เก็บข้อมูลตัวควบคุมแบ็กไลต์ — คลาส
DACBacklightและPWMBacklightใหม่ (import ได้จากdisplay) และอาร์กิวเมนต์ keyword-onlybacklight=บน constructor การแสดงผล SPI/parallel
การเปลี่ยนแปลงและปรับปรุงอื่น ๆ¶
ไดรเวอร์จอ ST7701 DSI ย้ายไปยังโมดูล
st7701.pyของตัวเอง (ยัง import ได้ผ่านfrom display import *) และถูก freeze บน Arduino Giga; ไดรเวอร์ IMUlsm9ds1ถูก freeze บน Arduino Nano 33 BLE Senseกล้อง MT9V022 / MT9V034 (global-shutter) ตอนนี้ใช้การแก้ไข row-noise เพื่อคุณภาพภาพที่ดีขึ้น
USB mass-storage ของ i.MX RT ตอนนี้มีป้ายกำกับเป็นดิสก์ OpenMV
การแก้ไขบั๊ก¶
กล้องและเซนเซอร์:
แก้ไขการตรวจจับมุม (
find_keypoints()FAST/AGAST) บนภาพที่มีความสูงมากกว่า 480 แถว — บัฟเฟอร์ต่อแถวตอนนี้ถูกปรับขนาดตามความสูงของภาพเพิ่มรองรับพิน FSYNC สำหรับ
snapshot()ที่ซิงค์เฟรมบน i.MX RT (OpenMV RT1060) และแก้ไขสลับพิน SPI4 MOSI/MISO บน RT1060
การแสดงผลและวิดีโอ:
แก้ไขลำดับอาร์กิวเมนต์ constructor ของ
SPIDisplay(bgr,byte_swap,triple_bufferถูกใช้กับพารามิเตอร์ผิด)แก้ไขความเสียหายของภาพ TV-shield เมื่อวาดภาพด้วยสี่เหลี่ยมที่กำหนด และขอบเขตเฟรม MJPEG ที่ไม่ถูกต้องเมื่อบันทึกเฟรมที่ปรับขนาด
เครือข่าย:
โหมด WINC WiFi AP ไม่บังคับใช้ข้อจำกัด WEP เท่านั้นที่ล้าสมัยอีกต่อไป — โหมด AP แบบเปิดและ WPA ทำงานได้พร้อมการจัดการ PSK ที่ถูกต้อง
ฮาร์ดแวร์และรองรับบอร์ด¶
OpenMV RT1060 — พิน FSYNC และแก้ไขพิน SPI4
Arduino GIGA — วิธีแก้ปัญหาความน่าเชื่อถือ QSPI; ST7701 display ถูก freeze ลง
Arduino Nano 33 BLE Sense — ไดรเวอร์ IMU
lsm9ds1ถูก freeze ลง
การเปลี่ยนแปลง API ที่ไม่รองรับย้อนหลัง¶
การเปลี่ยนแปลง API ที่ผู้ใช้มองเห็นได้ระหว่าง v4.5.0 และ v4.5.1 ขอบเขต: Python C-modules ใน modules/ และไลบรารี Python ใน scripts/libraries/
การเปลี่ยนแปลงแต่ละอย่างถูกแท็กตามผลกระทบ:
minor — API เฉพาะกลุ่ม; มีผลเฉพาะสคริปต์ที่ใช้งาน
behavior — API เหมือนเดิม ผลลัพธ์ต่างกัน; ตรวจสอบสคริปต์ที่ปรับแต่งแล้วอีกครั้ง
การเปลี่ยนแปลงถูกจัดกลุ่มตามผลกระทบตามลำดับนั้น หากต้องการพอร์ตโค้ด ให้ข้ามไปที่ migration checklist ที่ท้ายเอกสาร แต่ละ commit hash เชื่อมต่อไปยัง diff บน GitHub
constructor Image() และ API display (minor)¶
constructor image.Image ถูกปรับปรุงให้ใช้ keyword arguments (height, pixformat, buffer=, copy_to_fb=); ตอนนี้สามารถสร้างภาพจาก bytearray/buffer ที่มีอยู่ และต้องใช้ buffer สำหรับรูปแบบที่บีบอัด display.write() ถูกปรับปรุง: x_scale/y_scale ตอนนี้รับ float (อัตราส่วนสเกล) หรือ int (ขนาดเป้าหมายเป็นพิกเซล) และ keyword x_size/y_size แยกถูกลบออก อาร์กิวเมนต์ตำแหน่งแรกของ WINC.connect() ถูกเปลี่ยนชื่อ essid → ssid และผลลัพธ์การสแกน WINC WiFi เปลี่ยนเป็น (ssid_bytes, bssid_bytes, channel, rssi, security, N) (SSID/BSSID ตอนนี้เป็น bytes; BSSID ไม่ใช่ string MAC ที่จัดรูปแบบแล้ว)
ช่วงแบ็กไลต์, การปรับขนาด และ keyword-only arguments (behavior)¶
Display.backlight() ตอนนี้รับค่าความเข้ม 0–100 (0 = ปิด, 100 = เต็ม) แทน 0–255 โดยยก ValueError หากอยู่นอกช่วง ค่า x_scale/y_scale แบบ integer ตอนนี้ถูกถือว่าเป็นตัวคูณสเกล (เหมือนกับ float) แทนขนาดพิกเซลเป้าหมาย — ส่งผลกระทบต่อ fir.snapshot()/draw_ir(), tof.snapshot()/draw_depth(), display และการปรับขนาด tv การแยกวิเคราะห์อาร์กิวเมนต์ในโมดูล sensor, fir, tof, tv, mjpeg, gif, imageio, tf และ audio ถูกรวมเป็นหนึ่ง ทำให้ตัวเลือกที่เคยเป็น positional หลายรายการกลายเป็น keyword-only (ชื่อ, ค่าเริ่มต้น และพฤติกรรมไม่เปลี่ยนแปลง)
Commits: 391ec443f, 8bd25d6cd, 477312656, 08bf62a32, a4c0f20bf, 9b411a66d, 3d679f5a6, d15fc6b8d, 555e67ecd
รายการตรวจสอบการย้าย¶
สำหรับการพอร์ตที่สะอาดไปยัง v4.5.1 งานทั่วไปคือ:
อัปเดตการสร้าง
Image()เป็นรูปแบบ keyword ใหม่, เปลี่ยนdisplay.write()จากx_size/y_sizeและเปลี่ยนชื่อWINC.connect()essid→ssid(จัดการ tuple การสแกนแบบ bytes ใหม่) (การเปลี่ยนแปลง constructor/display/WINC)ปรับขนาด
Display.backlight()calls เป็น 0–100, ตรวจสอบการใช้x_scale/y_scaleแบบ integer อีกครั้ง และส่งตัวเลือกโมดูลที่เคยเป็น positional เป็น keyword (การเปลี่ยนแปลงพฤติกรรม)