v1.4.0

v1.4.0 är en grundläggande omorganisation av imlib. find_blobs() / find_markers() skrevs om för direkt färgtröskelspårning, många fristående bildmetoder slogs samman i blob-tupler och flera bildmetoder döptes om (subimgcopy, blitreplace, find_eyesfind_eye, compresscompressed). Den lägger också till sensor.get_fb() / AGC / AEC-växlingar och ~60 exempelskript. Detta är en kraftigt brytande release — läs de brytande ändringarna nedan.

Höjdpunkter

  • Färgbaserad blob-spårningfind_blobs() tar färgtröskelvärden direkt och returnerar en platt lista med blob-tupler.

  • Imlib-rensningsubimg()copy(), blit()replace(), find_eyes()find_eye(), compress()compressed().

  • Sensor — lade till sensor.get_fb() och växlingar för att aktivera AGC/AEC.

  • ~60 exempelskript tillagda/utökade.

  • Brytande: blob-API:et, borttagna bildmetoder och flera omdöpningar — se de brytande ändringarna.

Nya funktioner

  • Sensor — lade till sensor.get_fb() (hämtar bildbufferten från den senaste stillbilden), sensor.set_gain_ctrl(enable) (växlar AGC) och sensor.set_exposure_ctrl(enable) (växlar AEC).

  • Image — bildindexering (img[i]) stöder nu både läsning och skrivning av pixlar (gråskala / RGB565 / JPEG); lade till en image.compress() som arbetar på plats och ett quality=-nyckelord på JPEG-funktionerna; find_blobs() / find_markers() / find_features() returnerar nu en tom (itererbar) lista istället för ett icke-list-värde när inget hittas.

  • Lade till ~60 exempelskript (kortstyrning, bildfilter, färgspårning, detektering av ansikte / öga / särdrag, WiFi-sköld) och ett andra exempel på irisdetektering.

Övriga ändringar och förbättringar

  • image.histeq() fungerar nu på RGB565-bilder, inte bara gråskala.

Felrättningar

  • Initierade pyb.DAC vid uppstart så att DAC:en fungerar (#121), rättade en trasig image.dilate(), korruptionen av nollbyte i WINC client.send(), omiterering vid blob-sammanslagning, en buggi ominitiering av filbuffert som förstörde filsystemet efter första användningen, beräkningen av termopilens To_min / To_max (#113) samt tillämpade en uppströms MicroPython-HAL-I2C/DMA-patch.

Hårdvara och kortstöd

  • WiFi-sköld — WINC1500 uppdaterad till kortfiler för Rev-B.

  • pyb.DAC — DAC-kringutrustning aktiverad.

Brytande API-ändringar

Användarsynliga API-brott mellan v1.3.0 och v1.4.0. Omfattning: Python-C-moduler i modules/ och Python-bibliotek i scripts/libraries/.

Varje ändring är märkt med sin påverkan:

  • major — påverkar de flesta skript som använde funktionen; du behöver porta kod.

  • minor — smalt API; påverkar bara skript som använde det.

Ändringarna är grupperade efter påverkan i den ordningen. Om du bara vill porta din kod kan du hoppa till migreringschecklistan i slutet. Varje commit-hash länkar till sin diff på GitHub.

find_blobs() / find_markers() omskrivna (major)

image.find_blobs() / find_markers() skrevs om för färgbaserad spårning: du skickar nu färgtröskelvärden (och en valfri filterfunktion) direkt istället för att arbeta på en försegmenterad bild, och resultatet är en enda platt lista med 10-elements blob-tupler (med ett färgkodsfält) istället för ett nästlat per-färg-träd. Bearbeta om färgspårningsskript så att de skickar färgtröskelvärden och itererar den platta listan.

Commits: d1ff36602, 16daeb83a

Fristående bildmetoder borttagna (major)

image.threshold, image.centroid(), image.orientation_radians(), image.orientation_degrees() och image.pixels() togs bort. Data för centroid / orientering / pixelantal finns nu tillgängliga som fält i de blob-tupler som returneras av find_blobs().

Commits: 9e5d379c1

Omdöpning av imlib-metoder (major)

Flera bildmetoder döptes om/bearbetades om: image.subimg()image.copy(), image.blit()image.replace() och image.blend() ändrades för att matcha de andra två-bildsoperationerna. Metoderna image.scale() / scaled() / rainbow() togs bort (rainbow flyttades till FIR-modulen). Uppdatera anrop till de nya namnen.

Commits: b534dc6ff

find_eyes() omdöpt till find_eye() (minor)

image.find_eyes() döptes om till image.find_eye() och returnerar nu en 2-tupel iris (x, y) istället för den tidigare ögon-tupeln. Döp om anropet och uppdatera hanteringen av returvärdet.

Commits: 7a01a9bed

image.compress() omdöpt till compressed() (minor)

image.compress() (som returnerade en ny JPEG-bild) döptes om till image.compressed(); den nya image.compress() komprimerar istället bilden på plats och returnerar None. image.save() fick också ett quality=-nyckelord och returnerar nu None istället för True. Migrera img.compress(q) (som förväntar sig en returnerad bild) till img.compressed(quality=q).

Commits: 367e5fdd3

Migreringschecklista

För en ren portning till v1.4.0 är det typiska arbetet:

  1. Bearbeta om färgspårningskod så att den skickar färgtröskelvärden till find_blobs() / find_markers() och itererar den platta blob-tupellistan (omskrivningen av find_blobs).

  2. Läs data för centroid / orientering / pixel från blob-tuplerna istället för de borttagna fristående metoderna (de borttagna bildmetoderna).

  3. Döp om subimgcopy, blitreplace, rätta blend()-anrop och ersätt scale / scaled / rainbow (imlib-omdöpningarna).

  4. Döp om find_eyes()find_eye() (omdöpningen av find_eye) och compress()compressed() (omdöpningen av compress).

Alla andra skript körs oförändrade.