v1.4.0

v1.4.0 เป็นการจัดระเบียบ imlib ครั้งใหญ่ find_blobs() / find_markers() ถูกเขียนใหม่สำหรับการติดตามด้วยค่าขีดแบ่งสี, เมธอด image แบบ standalone หลายรายการถูกรวมเข้าใน blob tuples และเมธอด image หลายรายการถูกเปลี่ยนชื่อ (subimgcopy, blitreplace, find_eyesfind_eye, compresscompressed) นอกจากนี้ยังเพิ่ม sensor.get_fb() / สวิตช์ AGC / AEC และสคริปต์ตัวอย่างประมาณ 60 รายการ นี่เป็นรุ่นที่มีการเปลี่ยนแปลงครั้งใหญ่มาก — โปรดอ่านการเปลี่ยนแปลงที่ไม่เข้ากันด้านล่าง

ไฮไลต์

  • การติดตาม blob ด้วยสีfind_blobs() รับค่าขีดแบ่งสีโดยตรงและคืนรายการ blob tuples แบบแบน

  • ทำความสะอาด Imlibsubimg()copy(), blit()replace(), find_eyes()find_eye(), compress()compressed()

  • Sensor — เพิ่ม sensor.get_fb() และสวิตช์เปิด/ปิด AGC/AEC

  • เพิ่มสคริปต์ตัวอย่าง ~60 รายการ

  • เปลี่ยนแปลงครั้งใหญ่: blob API, เมธอด image ที่ถูกลบออก และการเปลี่ยนชื่อหลายรายการ — ดูการเปลี่ยนแปลงที่ไม่เข้ากัน

ฟีเจอร์ใหม่

  • Sensor — เพิ่ม sensor.get_fb() (ดึง framebuffer สแนปช็อตล่าสุด), sensor.set_gain_ctrl(enable) (สลับ AGC) และ sensor.set_exposure_ctrl(enable) (สลับ AEC)

  • Image — subscript ของ image (img[i]) รองรับทั้งการอ่านและเขียนพิกเซล (grayscale / RGB565 / JPEG); เพิ่ม image.compress() แบบ in-place และ keyword quality= สำหรับฟังก์ชัน JPEG; find_blobs() / find_markers() / find_features() ตอนนี้คืนรายการว่าง (iterable) แทน non-list เมื่อไม่พบสิ่งใด

  • เพิ่มสคริปต์ตัวอย่างประมาณ 60 รายการ (การควบคุมบอร์ด, image filters, color tracking, การตรวจจับใบหน้า/ตา/ลักษณะเด่น, WiFi shield) และตัวอย่างการตรวจจับม่านตาชิ้นที่สอง

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

  • image.histeq() ตอนนี้ทำงานได้กับภาพ RGB565 ไม่ใช่แค่ระดับสีเทา

การแก้ไขบัก

  • เริ่มต้น pyb.DAC ตอน boot เพื่อให้ DAC ทำงานได้ (#121), แก้ไข image.dilate() ที่เสีย, ความเสียหายจาก zero-byte ของ WINC client.send(), การ re-iteration ของการรวม blob, บัก reinitialize file-buffer ที่ทำลาย filesystem หลังใช้งานครั้งแรก, การคำนวณ To_min / To_max ของ thermopile (#113) และ patch MicroPython HAL I2C/DMA upstream

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

  • WiFi shield — WINC1500 อัพเดตเป็นไฟล์บอร์ด Rev-B

  • pyb.DAC — เปิดใช้งาน DAC peripheral

การเปลี่ยนแปลง API ที่ไม่เข้ากัน

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

การเปลี่ยนแปลงแต่ละรายการถูกระบุด้วยผลกระทบ:

  • major — ส่งผลกระทบต่อสคริปต์ส่วนใหญ่ที่ใช้ฟีเจอร์นั้น; คุณจำเป็นต้องแก้ไขโค้ด

  • minor — API แคบ; ส่งผลเฉพาะสคริปต์ที่ใช้มันเท่านั้น

การเปลี่ยนแปลงถูกจัดกลุ่มตามผลกระทบตามลำดับนั้น หากต้องการแก้ไขโค้ดเพียงอย่างเดียว ให้ข้ามไปยัง migration checklist ที่ท้ายเอกสาร แต่ละ commit hash มีลิงก์ไปยัง diff บน GitHub

find_blobs() / find_markers() เขียนใหม่ (major)

image.find_blobs() / find_markers() ถูกเขียนใหม่สำหรับการติดตามด้วยสี: ตอนนี้คุณส่งค่าขีดแบ่งสี (และฟังก์ชันกรองเสริม) โดยตรง แทนที่จะทำงานบนภาพที่ผ่านการ segment มาแล้ว และผลลัพธ์เป็นรายการแบน 10-element blob tuples (พร้อมฟิลด์ color-code) แทนต้นไม้ per-color แบบซ้อน ให้แก้ไขสคริปต์ color-tracking ให้ส่งค่าขีดแบ่งสีและ iterate รายการแบน

Commits: d1ff36602, 16daeb83a

ลบเมธอด image แบบ standalone (major)

image.threshold, image.centroid(), image.orientation_radians(), image.orientation_degrees() และ image.pixels() ถูกลบออกแล้ว ข้อมูล centroid / orientation / pixel-count ตอนนี้มีให้เป็นฟิลด์ใน blob tuples ที่คืนมาจาก find_blobs()

Commits: 9e5d379c1

เปลี่ยนชื่อเมธอด Imlib (major)

เมธอด image หลายรายการถูกเปลี่ยนชื่อ/แก้ไข: image.subimg()image.copy(), image.blit()image.replace() และ image.blend() ถูกเปลี่ยนให้ตรงกับการดำเนินการ two-image อื่นๆ เมธอด image.scale() / scaled() / rainbow() ถูกลบออก (rainbow ย้ายไปยัง FIR module) ให้อัพเดตการเรียกฟังก์ชันให้ใช้ชื่อใหม่

Commits: b534dc6ff

find_eyes() เปลี่ยนชื่อเป็น find_eye() (minor)

image.find_eyes() ถูกเปลี่ยนชื่อเป็น image.find_eye() และตอนนี้คืน 2-tuple iris (x, y) แทน eyes tuple เดิม ให้เปลี่ยนชื่อการเรียกและอัพเดตการจัดการค่าที่คืนมา

Commits: 7a01a9bed

image.compress() เปลี่ยนชื่อเป็น compressed() (minor)

image.compress() (ซึ่งคืน JPEG image ใหม่) ถูกเปลี่ยนชื่อเป็น image.compressed(); image.compress() ใหม่จะบีบอัดภาพ in-place และคืน None แทน image.save() ยังได้รับ keyword quality= และตอนนี้คืน None แทน True ให้แก้ไข img.compress(q) (ที่คาดหวังภาพที่คืนมา) เป็น img.compressed(quality=q)

Commits: 367e5fdd3

Migration checklist

สำหรับการแก้ไขให้เข้ากับ v1.4.0 งานทั่วไปที่ต้องทำ:

  1. แก้ไขโค้ด color-tracking ให้ส่งค่าขีดแบ่งสีไปยัง find_blobs() / find_markers() และ iterate รายการ blob-tuple แบบแบน (การเขียน find_blobs ใหม่)

  2. อ่านข้อมูล centroid / orientation / pixel จาก blob tuples แทนเมธอด standalone ที่ถูกลบออก (เมธอด image ที่ถูกลบ)

  3. เปลี่ยนชื่อ subimgcopy, blitreplace, แก้ไขการเรียก blend() และแทนที่ scale / scaled / rainbow (การเปลี่ยนชื่อ imlib)

  4. เปลี่ยนชื่อ find_eyes()find_eye() (การเปลี่ยนชื่อ find_eye) และ compress()compressed() (การเปลี่ยนชื่อ compress)

สคริปต์อื่นๆ ทั้งหมดทำงานได้โดยไม่ต้องเปลี่ยนแปลง