AI Vision Sensorin käyttö VEXcode V5 Pythonissa

Tämä artikkeli tarjoaa yleiskatsauksen toiminnoista, jotka ovat käytettävissä Pythonin AI Vision Sensorin käytössä, sekä yksinkertaiset ohjeet niiden käyttöön. Opit AI Vision Sensorin käyttöprosessin neljä vaihetta – tietojen hankkiminen, saatujen kohteiden määrän näkeminen, käytettävän kohteen valitseminen tiedoista ja mitä tietoja kohteesta vedetään.

Hanki visuaalista dataa AI Vision Sensorin avulla

AI Vision Sensor kerää tietoa ympäristöstään ottamalla kuvan siitä, mitä se tällä hetkellä katsoo. Kaikki objektit, jotka se tunnistaa määritetylläVisual Signature :llä, asetetaan monitoon, jota muut toiminnot voivat sitten käyttää.

ota_snapshot

Kun käytät take_snapshot -komentoa, sinun on luotava muuttuja tallentamaan sen luoma monikko. Kaikkivisuaalista allekirjoitusta on määritettävä ennen kuin niitä voidaan käyttää parametreina. Kun käytät toimintoa, määritä allekirjoitusparametri anturin nimeksi, kaksoisalaviiva ja sen jälkeen visuaalisen allekirjoituksen nimi.apuohjelma exm.PNG

vision_objects = ai_vision_6.take_snapshot(ai_vision_6__Blue)
vision_objects = ai_vision_6.take_snapshot(ai_vision_6__Red)
vision_objects = ai_vision_6.take_snapshot(ai_vision_6__Vihreä)

Visual Signature -asetukset täyttyvät myös automaattisesti VEXcodessa, kun alat kirjoittaa sulkeiden alkua.

Esimerkki

Tässä esimerkissä muuttuja vision_objects tallentaa monikon, joka sisältää havaitut visuaalista allekirjoitusta AI Vision Sensorista nimeltä ai_vision_6. Se näyttää havaittujen kohteiden määrän ja ottaa uuden tilannekuvan 0,5 sekunnin välein.

while True: 

# Ota tilannekuva luodaksesi joukon havaittuja kohteita
vision_objects = ai_vision_6.take_snapshot(ai_vision_6__Blue)

brain.screen.clear_screen()
brain.screen.set_cursor(1, 1)

brain. .print("objektien määrä:", len(vision_objects))
odota(0,5, SECONDS)

Määritä, kuinka monta esinettä havaittiin

len -komentoa voidaan käyttää monikoiden kanssa. Tämän avulla voidaan nähdä kuinka monta objektia take_snapshot -komento on tallentanut monikkoon.

Paras käytäntö on aina varmistaa, että olet havainnut kohteen, ennen kuin yrität hakea tietoja tilannekuvasta. Käytä tätä varten komentoa len monikon tallentavan muuttujan kanssa.

len(vision_objects) > 0

Esimerkki

Tässä esimerkissä muuttuja vision_objects tallentaa monikon, joka sisältää havaitut visuaalista allekirjoitusta AI Vision Sensorista nimeltä ai_vision_6. Se näyttää havaittujen kohteiden määrän ja ottaa uuden tilannekuvan 0,5 sekunnin välein. Jos se kuitenkin on havainnut objektin, se tulostaa havaitsemansa kohteen.

while True: 
# Ota tilannekuva luodaksesi joukon havaittuja kohteita
vision_objects = ai_vision_6.take_snapshot(ai_vision_6__Blue)

# Tyhjennä näyttö/nollaa, jotta voimme näyttää uutta tietoa
brain.screen.clear_screen()
brain. screen.set_cursor(1, 1)

if len(vision_objects) > 0:
# Tulosta kuinka monta kohdetta löydettiin
brain.screen.next_row()
brain.screen.print("object count:", len(vision_objects) ))
odota (0,5, SEKUNTIA)

Käyttämällä len -komentoa monikon kanssa voit myös nähdä kuinka monta kohdetta havaittiin.

Valitse, mistä objektista haluat saada tietoja

On kaksi tapaa poimia tietoja monikkosta. Yksi tapa on hakea tiedot suoraan suurimmasta objektista, joka havaittiin viimeisimmässä take_snapshot -komennon käytössä, käyttämällä funktiota ai.vision.largest_object(). Toinen menetelmä sisältää tietyn muuttujan ja objektiindeksin määrittämisen.

ai.vision.largest_object()

ai.vision.largest_object() on aputoiminto, joka käyttää monikon suurinta objektia, mutta toimii vain viimeisimmän tilannevedoksen kanssa.

while True: 
# Ota tilannekuva luodaksesi joukon havaittuja kohteita
vision_objects = ai_vision_6.take_snapshot(ai_vision_6__Blue)

# Tyhjennä näyttö/nollaa, jotta voimme näyttää uutta tietoa
brain.screen.clear_screen()
brain. screen.set_cursor(1, 1)

# Tarkista, onko objekti olemassa ennen tietojen hakemista
if len(vision_objects) > 0:
brain.screen.print(Center X: ", ai_vision.largest_object().centerX)
else :
brain.screen.print("ei objektia")
odota(0,5, SEKUNTIA)

Tässä esimerkissä koodi tarkistaa, onko objekti olemassa, ennen kuin funktio ai.vision.largest_object() palauttaa suurimman havaitun objektin .centerX -ominaisuuden ja tulostaa sen.

visio_objektit[0]

Toinen tapa hakea dataa monikkosta on kutsua monikko suoraan tallentavaa muuttujaa. Määritä suluissa sen objektin indeksi, josta haluat poimia tietoja. Palautettu objektien monikko listaa aina suurimman objektin ensimmäisenä indeksissä 0. Tämän jälkeen kohteet järjestetään suurimmasta pienimpään.

while True: 
# Ota tilannekuva luodaksesi joukon havaittuja kohteita
vision_objects = ai_vision_6.take_snapshot(ai_vision_6__Blue)

# Tyhjennä näyttö/nollaa, jotta voimme näyttää uutta tietoa
brain.screen.clear_screen()
brain. screen.set_cursor(1, 1)

# Tarkista, onko objekti olemassa ennen tietojen hakemista
if len(vision_objects) > 0:
brain.screen.print(Center X: ", vision_object[0].centerX)
else:
brain.screen.print("ei objektia")
odota(0,5, SEKUNTIA)

Tässä esimerkissä koodi tarkistaa, onko objekti olemassa, ennen kuin funktio vision_object[0] palauttaa 0-indeksiobjektin .centerX -ominaisuuden ja tulostaa sen.

Valitse, mitä tietoja objektista vedetään

Jokaisesta objektista voidaan kutsua kahdeksan ominaisuutta.

  • .korkeus
  • .leveys
  • .centerX
  • .centerY
  • .originX
  • .alkuperä
  • .kulma
  • .olemassa

.korkeus

Ominaisuus .height palauttaa havaitun kohteen korkeuden pikseleinä.

Käytä tätä koodia palauttaaksesi ominaisuuden .height:

vision_objects[0].height

Ominaisuus .height palauttaa arvon välillä 0 - 240 pikseliä.

.leveys

Ominaisuus .width palauttaa havaitun kohteen leveyden pikseleinä.

Käytä tätä koodia palauttaaksesi ominaisuuden .width:

vision_objects[0].width

Ominaisuus .width palauttaa arvon välillä 0–320.

.centerX

Ominaisuus .centerX raportoi havaitun visuaalisen allekirjoituksenkeskipisteen X-koordinaatin.

Käytä tätä koodia palauttaaksesi .centerX -ominaisuuden:

vision_objects[0].centerX

Ominaisuus .centerX palauttaa luvun väliltä 0–320.

.centerY

Ominaisuus .centerY raportoi havaitun visuaalisen allekirjoituksenkeskustan Y-koordinaatin.

Käytä tätä koodia palauttaaksesi .centerY -ominaisuuden:

vision_objects[0].centerY

Ominaisuus .centerY palauttaa luvun väliltä 0–240.

.originX

Ominaisuus .originX raportoi havaitun visuaalisen allekirjoituksen vasemman yläkulman X-koordinaatin.

Käytä tätä koodia palauttaaksesi .originX -ominaisuuden:

vision_objects[0].originX

Ominaisuus .originXpalauttaa luvun väliltä 0–320.

.alkuperä

Ominaisuus .originY ilmoittaa havaitun visuaalisen allekirjoituksen vasemman yläkulman Y-koordinaatin.

Käytä tätä koodia palauttaaksesi .originY -ominaisuuden:

vision_objects[0].originY

Ominaisuus .originYpalauttaa luvun väliltä 0–240.

.kulma

Ominaisuus .angle palauttaa Color Coden kulman arvon.

Käytä tätä koodia palauttaaksesi ominaisuuden .angle:

visio_objektit[0].kulma

Ominaisuus .angle palauttaa havaitun värikoodin suunnan, joka vaihtelee välillä 0 - 359,99 astetta.

.olemassa

.exists on Boolen ominaisuus, joka palauttaa tosi, jos se on kelvollinen objekti. 

Se palauttaa epätosi, jos objekti on virheellinen, esimerkiksi jos käytetään negatiivista kokonaislukua. Jos objekti on virheellinen, kaikki muut ominaisuudet palauttavat arvokseen nollia.

while True: 
# Ota tilannekuva luodaksesi joukon havaittuja kohteita
vision_objects = ai_vision_6.take_snapshot(ai_vision_6__Blue)
# tyhjennä näyttö/nollaa, jotta voimme näyttää uutta tietoa
brain.screen.clear_screen()
brain.screen .set_cursor(1, 1)

if vision_objects[0].exists:
brain.screen.print("x:", vision_objects[0].centerX)
else:
brain.screen.print("ei objektia" )
odota (0,1, SEKUNTIA)

Tässä esimerkissä koodi tarkistaa ominaisuuden .exists , ja jos se palauttaa tosi, se tulostaa .centerX ominaisuuden arvon aivoille. Jos ominaisuus .exists palauttaa epätosi, se tulostaa, että objektia ei ole.

For more information, help, and tips, check out the many resources at VEX Professional Development Plus

Last Updated: