Š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ą.
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
.centras
ypatybė 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ė .originX
pateiks 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ė .originY
pateiks 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.