AI Vision jutiklio naudojimas VEXcode V5 Python

Šiame straipsnyje apžvelgiamos funkcijos, kurias galima naudoti naudojant Python AI Vision Sensor, kartu pateikiamos paprastos instrukcijos, kaip jas naudoti. Sužinosite keturis AI Vision Sensor naudojimo etapus – duomenų gavimą, gautų objektų kiekio matymą, objekto pasirinkimą iš duomenų naudoti ir kokius duomenis iš objekto ištraukti.

Gaukite vaizdinius duomenis naudodami AI Vision Sensor

Norėdamas surinkti informaciją iš aplinkos, AI Vision Sensor nufotografuoja tai, ką jis šiuo metu žiūri. Visi objektai, kuriuos ji identifikuoja su nurodytuvaizdiniu parašu , dedami į seką, kurią vėliau gali naudoti kitos funkcijos.

take_snapshot

Kai naudojate komandą take_snapshot , turėsite sukurti kintamąjį, kad išsaugotumėte jos sukurtą seką. Bet kokiusvaizdinius parašus reikės sukonfigūruoti, kad juos būtų galima naudoti kaip parametrą. Kai naudojate funkciją, nurodykite parašo parametrą kaip jutiklio pavadinimą, dvigubą pabraukimą, po kurio – vaizdinio parašo pavadinimą.naudingumas 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__Green)

Jūsų Visual Signature parinktys taip pat bus automatiškai užpildomos VEXcode, kai pradėsite rašyti skliaustų pradžią.

Pavyzdys

Šiame pavyzdyje kintamasis vision_objects saugo rinkinį, kuriame yra aptikti vaizdiniai parašai iš AI Vision jutiklio, pavadinto ai_vision_6. Rodo aptiktų objektų skaičių ir kas 0,5 sekundės užfiksuoja naują momentinę nuotrauką.

o Tiesa: 

# Padarykite momentinę nuotrauką, kad sukurtumėte aptiktų objektų rinkinį
vision_objects = ai_vision_6.take_snapshot(ai_vision_6__Blue)

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

brain. .print("objektų skaičius:", len(vision_objects))
laukti(0,5, SECONDS)

Nustatykite, kiek objektų buvo aptikta

Komandą len galima naudoti su eilėmis. Tai gali būti naudojama norint pamatyti, kiek objektų take_snapshot komanda išsaugojo sekoje.

Geriausia visada įsitikinti, kad aptikote objektą, prieš bandydami gauti bet kokią informaciją iš momentinės nuotraukos. Norėdami tai padaryti, naudokite komandą len su kintamuoju, kuriame saugoma eilutė.

len(vision_objektai) > 0

Pavyzdys

Šiame pavyzdyje kintamasis vision_objects saugo rinkinį, kuriame yra aptikti vaizdiniai parašai iš AI Vision jutiklio, pavadinto ai_vision_6. Rodo aptiktų objektų skaičių ir kas 0,5 sekundės užfiksuoja naują momentinę nuotrauką. Tačiau, jei jis aptiko objektą, jis atspausdins, kiek objektų aptiko.

Nors True: 
# Padarykite momentinę nuotrauką, kad sukurtumėte aptiktų objektų eilutę
vision_objects = ai_vision_6.take_snapshot(ai_vision_6__Blue)

# Išvalykite ekraną / nustatykite iš naujo, kad galėtume rodyti naują informaciją
brain.screen.clear_screen()
smegenys. screen.set_cursor(1, 1)

if len(vision_objects) > 0:
# Spausdinti kiek objektų rasta
brain.screen.next_row()
brain.screen.print("objektų skaičius:", len(vision_objects) ))
laukti (0,5, sekundės)

Naudodami komandą len su eilute taip pat galite pamatyti, kiek objektų buvo aptikta.

Pasirinkite, iš kurio objekto norite gauti duomenis

Yra du būdai, kaip išgauti duomenis iš sektos. Vienas iš būdų yra tiesiogiai gauti informaciją iš didžiausio objekto, aptikto naudojant komandą take_snapshot , naudojant funkciją ai.vision.largest_object(). Kitas metodas apima konkretaus kintamojo ir objekto indekso nurodymą.

ai.vision.largest_object()

ai.vision.largest_object() yra pagalbinė funkcija, skirta pasiekti didžiausią objektą sekoje, tačiau veiks tik su naujausia momentine nuotrauka.

Nors True: 
# Padarykite momentinę nuotrauką, kad sukurtumėte aptiktų objektų eilutę
vision_objects = ai_vision_6.take_snapshot(ai_vision_6__Blue)

# Išvalykite ekraną / nustatykite iš naujo, kad galėtume rodyti naują informaciją
brain.screen.clear_screen()
smegenys. screen.set_cursor(1, 1)

# Prieš ištraukiant duomenis patikrinkite, ar objektas yra
if len(vision_objects) > 0:
brain.screen.print(Center X: ", ai_vision.largest_object().centerX)
else :
brain.screen.print("nėra objekto")
laukti(0,5, SEKUNDĖS)

Šiame pavyzdyje kodas patikrina, ar objektas egzistuoja, prieš naudojant funkciją ai.vision.largest_object() , kad grąžintų didžiausio aptikto objekto .centerX ypatybę ir ją išspausdintų.

vision_objects[0]

Kitas būdas gauti duomenis iš sekos yra iškviesti kintamąjį, kuris tiesiogiai saugo seką. Skliausteliuose nurodykite objekto, iš kurio norite gauti duomenis, indeksą. Grąžintoje objektų eilutėje visada pirmiausia nurodomas didžiausias objektas, esantis indeksu 0. Vėliau objektai rūšiuojami nuo didžiausio iki mažiausio.

Nors True: 
# Padarykite momentinę nuotrauką, kad sukurtumėte aptiktų objektų eilutę
vision_objects = ai_vision_6.take_snapshot(ai_vision_6__Blue)

# Išvalykite ekraną / nustatykite iš naujo, kad galėtume rodyti naują informaciją
brain.screen.clear_screen()
smegenys. screen.set_cursor(1, 1)

# Prieš ištraukiant duomenis patikrinkite, ar objektas yra
if len(vision_objects) > 0:
brain.screen.print(Center X: ", vision_object[0].centerX)
else:
brain.screen.print("nėra objekto")
laukti(0,5, SEKUNDĖS)

Šiame pavyzdyje kodas patikrina, ar objektas egzistuoja, prieš naudojant funkciją vision_object[0] , kad būtų grąžinta 0 indekso objekto .centerX ypatybė ir ją spausdinant.

Pasirinkite, kokius duomenis paimti iš objekto

Iš kiekvieno objekto yra aštuonios savybės, kurias galima iškviesti.

  • .aukštis
  • .plotis
  • .centerX
  • .Centras
  • .originX
  • .kilmė
  • .kampas
  • .egzistuoja

.aukštis

Ypatybė .height grąžina aptikto objekto aukštį pikseliais.

Naudokite šį kodą norėdami grąžinti .height nuosavybę:

vizijos_objektai[0].aukštis

Ypatybė .height pateiks vertę nuo 0 iki 240 pikselių.

.plotis

Ypatybė .width grąžina aptikto objekto pločio pikseliais.

Naudokite šį kodą norėdami grąžinti ypatybę .width:

vizijos_objektai[0].plotis

Ypatybė .width pateiks vertę nuo 0 iki 320.

.centerX

Ypatybė .centerX praneša aptikto vaizdinio parašocentro X koordinatę.

Naudokite šį kodą norėdami grąžinti .centerX nuosavybę:

vision_objects[0].centerX

Ypatybė .centerX pateiks skaičių nuo 0 iki 320.

.Centras

Ypatybė .centerY praneša aptikto vaizdinio parašo centro Y koordinatę.

Naudokite šį kodą norėdami grąžinti .centerY nuosavybę:

vision_objects[0].centerY

.centrasypatybė pateiks skaičių nuo 0 iki 240.

.originX

Ypatybė .originX nurodo aptikto vizualinio parašo viršutinio kairiojo kampo X koordinatę.

Naudokite šį kodą norėdami grąžinti .originX nuosavybę:

vision_objects[0].originX

Ypatybė .originXpateiks skaičių nuo 0 iki 320.

.kilmė

Ypatybė .originY nurodo aptikto vizualinio parašo viršutinio kairiojo kampo Y koordinatę.

Naudokite šį kodą norėdami grąžinti .originY nuosavybę:

vizijos_objektai[0].kilmė

Ypatybė .originYpateiks skaičių nuo 0 iki 240.

.kampas

Ypatybė .angle grąžina spalvų kodo kampo vertę.

Naudokite šį kodą norėdami grąžinti ypatybę .angle:

vision_objects[0].kampas

Ypatybė .angle grąžina aptiktą spalvų kodo orientaciją, kuri svyruoja nuo 0 iki 359,99 laipsnių.

.egzistuoja

.exists yra Būlio ypatybė, kuri grąžina true, jei tai tinkamas objektas. 

Jei objektas neteisingas, pvz., naudojamas neigiamas sveikasis skaičius, jis grąžins false. Jei objektas neteisingas, visos kitos savybės grąžins 0 kaip savo vertę.

o tiesa: 
# Padarykite momentinę nuotrauką, kad sukurtumėte aptiktų objektų rinkinį
vision_objects = ai_vision_6.take_snapshot(ai_vision_6__Blue)
# išvalykite ekraną / nustatykite iš naujo, kad galėtume rodyti naują informaciją
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("nėra objekto" )
laukti (0,1, sekundės)

Šiame pavyzdyje kodas tikrina ypatybę .exists , jei grąžinama tiesa, smegenims išspausdins .centerX ypatybės reikšmę. Jei ypatybė .exists grąžina false, bus išspausdinta, kad objekto nėra.

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

Last Updated: