AI Vision jutiklio naudojimas VEXcode V5 C++

Š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 yra saugomi AI Vision Sensor viduje, kurį vėliau gali naudoti kitos funkcijos.

.takeSnapshot

Bet kokius vaizdinių parašų reikės sukonfigūruoti, kad juos būtų galima naudoti kaip parametrą. Kai naudojate metodą, nurodykite parašo parametrą kaip jutiklio pavadinimą, dvigubą pabraukimą, po kurio nurodomas vizualinio parašo pavadinimas.

naudingumas exm.PNG

AIVision6.takeSnapshot (AIVision6__Blue)
AIVision6.takeSnapshot(AIVision6__Red)
AIVision6.takeSnapshot (AIVision6__Žalia)

Pavyzdys

Šiame pavyzdyje .takeSnapshot metodas naudojamas ieškant bet kokių objektų, atitinkančių "Blue" vaizdinį parašą. Tada kodas parodys objektų, rastų pagal tą vaizdinį parašą, skaičių.

int main() {
while (true) {
// Padarykite momentinę nuotrauką, kad patikrintumėte, ar nėra aptiktų objektų
AIVision6.takeSnapshot(Blue);

// Išvalyti ekraną/atstatyti iš naujo, kad galėtume rodyti naują informaciją
Brain.Screen.clearScreen();
Brain.Screen.setCursor(1, 1);

// Spausdinti kiek objektų buvo aptikta
Brain.Screen.print("objektų skaičius: %d", AIVision6.objectCount);

laukti(0,5 sekundės);
}
}

Nustatykite, kiek objektų buvo aptikta

Kadangi .takeSnapshot metodas vienu metu gali aptikti kelis objektus su tais pačiais Visual Signature , galite sužinoti, kiek objektų buvo aptikta naudojant .objectCount ypatybę.

Brain.Screen.Print(“%d”, AIVision1.objectCount)

Pavyzdys

Šiame pavyzdyje ypatybė .objectCount naudojama patikrinti, ar paskutinėje momentinėje nuotraukoje buvo aptiktas bent 1 vizualinis parašas , tada spausdinama tiesa arba klaidinga, jei objektas buvo aptiktas. Jei objektas buvo aptiktas, jis išspausdina iš viso aptiktų objektų skaičių.

int main() {
while (true) {
// Padarykite momentinę nuotrauką, kad patikrintumėte, ar nėra aptiktų objektų
AIVision6.takeSnapshot(Blue);

// Išvalyti ekraną/atstatyti iš naujo, kad galėtume rodyti naują informaciją
Brain.Screen.clearScreen();
Brain.Screen.setCursor(1, 1);

// jei buvo rasti objektai, atspausdinkite kiek
if (AIVision6.objectCount > 0) {
Brain.Screen.newLine();
Brain.Screen.print("objektų skaičius: %d", AIVision6.objectCount);
}

laukti(0,5 sekundės);
}
}

Pasirinkite, iš kurio objekto norite gauti duomenis

Yra du būdai išgauti duomenis iš AI Vision Sensor. Vienas iš būdų yra tiesiogiai gauti informaciją iš didžiausio objekto, aptikto naudojant .takeSnapshot metodą, naudojant AIVision.largestObject ypatybę. Kitas metodas naudoja AIVision.objects[] ypatybę ir nurodo objekto indeksą.

AIVizija.largestObject

ai.vision.largest_object() yra nuosavybė pasiekti didžiausią objektą.

int main() {
while (true) {
// Padarykite momentinę nuotrauką, kad patikrintumėte, ar nėra aptiktų objektų
AIVision6.takeSnapshot(BlueBox);

// Išvalyti ekraną/atstatyti iš naujo, kad galėtume rodyti naują informaciją
Brain.Screen.clearScreen();
Brain.Screen.setCursor(1, 1);

// Jei buvo rasti objektai, išspausdinkite vietą
if (AIVision6.objects[0].exists) {
Brain.Screen.print("Centras X: %d, AIVision6.largestObject[0].centerX);
} else {
Brain.Screen.print("nėra objekto");
}

laukti(0,5, sekundės);
}
}

AIVijon.objektai

Kitas būdas gauti duomenis yra nurodyti objekto, iš kurio norite išgauti duomenis, indeksą. Momentinė nuotrauka grąžina aptiktus objektus su didžiausiu objektu, kurio indeksas 0, ir išdėsto objektus nuo didžiausio iki mažiausio.

int main() {
while (true) {
// Padarykite momentinę nuotrauką, kad patikrintumėte, ar nėra aptiktų objektų
AIVision6.takeSnapshot(BlueBox);

// Išvalyti ekraną/atstatyti iš naujo, kad galėtume rodyti naują informaciją
Brain.Screen.clearScreen();
Brain.Screen.setCursor(1, 1);

// Jei buvo rasti objektai, išspausdinkite vietą
if (AIVision6.objects[0].exists) {
Brain.Screen.print("Centras X: %d, AIVision6.objects[0].centerX);
} else {
Brain.Screen.print("nėra objekto");
}

laukti(0,5, sekundės);
}
}

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ę:

AIVijon6.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:

AIVijon6.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ę:

AIVizija6.objektai[0].centrasX

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ę:

AIVizija6.objektai[0].centras

.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ę:

AIVizija6.objektai[0].kilmėX

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ę:

AIVizija6.objektai[0].kilmėY

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:

AIVijon6.objektai[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ę.

int main() {
while (true) {
// Padarykite momentinę nuotrauką, kad patikrintumėte, ar nėra aptiktų objektų
AIVision6.takeSnapshot(BlueBox);

// Išvalyti ekraną/atstatyti iš naujo, kad galėtume rodyti naują informaciją
Brain.Screen.clearScreen();
Brain.Screen.setCursor(1, 1);

// Jei buvo rasti objektai, išspausdinkite vietą
if (AIVision6.objects[0].exists) {
Brain.Screen.print("Centras X: %d, AIVision6.objects[0].centerX);
} else {
Brain.Screen.print("nėra objekto");
}

laukti(0,5, sekundės);
}
}

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

Last Updated: