RR.O.P. - RaspRobot OpenCV projekt (7 / 14 steg)
Steg 7: Att skapa och konfigurera datorn Vision System (CVS)
OpenCV biblioteket är där alla bearbetningen av videon är klar och den information som hämtats från denna bearbetning är gjort att göra beslut robotics plattform och andra komponenter som aktiverar det dynamiska systemet. Hans version är OpenCV-2.2.8 att vara närvarande exempel och alla funktioner som finns i versioner för Windows, MAC och Linux.
Det var nödvändigt att göra installationen med kommandot:
Uppdatera systemet: sudo lämplig-få uppdatera
Installera uppdateringar: sudo apt-get upgrade
Installera OpenCV biblioteket: sudo lämplig-få installera python-opencv
CVS (Computer Visionsystem):
Bilden av detta steg visar uppsättningen systemfunktioner. Dessa funktioner körs sekventiellt, upprepade gånger och för verkliga värden för de dynamiska egenskaperna för objektet (koordinater och storlek), upp till sex gånger (eller sex variationer) en andra gång. Dvs, varje sekund genereras upp till sex värden som kommer att bearbetas och jämfört, effektivisera plattformen.
Användning av detta steg för varje steg-beskrivning:
- Först var det nödvändigt att fånga (eller få) bilden eller, särskilt den ram som innehåller bilden (frame). Den är 160 x 120 bildpunkter. Ramen i stort (t.ex., 640 pixlar bred och 480 bildpunkter hög), orsakade avmattning i erkännandeprocessen när bilden överlämnades distans. Systemstandard är RGB-färg, färgsystemet representeras i ramen webcam erhålls genom den grundläggande färger: röd (röd), grön (grön) och blå (blå). Dessa färger är representerade på en pixel för pixel dimensionell vektor, exempelvis färgen röd är föreställda 0com värden (0, 255, 0), respektive representerade för varje kanal. Det vill säga har varje pixel dess RGB-värde som representeras av tre byte (röd grön och blå).
- Efter den tagna bilden utfördes konvertering från RGB färgsystem till färgen HSV (nyans, mättnad, och värdet) , eftersom denna modell beskriver liknande erkännande av de mänskliga ögat färgerna. Eftersom RGB (röd, grön och blå) systemet har de färger som bygger på kombinationer av primärfärgerna (rött, grönt och blått) och HSV systemet definierar färger som deras färg, glitter och glans (nyans, mättnad och värde), att underlätta utvinning av information. I diagram steg 2 visar konvertering från RGB till HSV, med hjälp av "cvtColor" native OpenCV, som konverterar indatabilden från en ingång färg till en annan funktion.
- Med bilden i HSV modell var det nödvändigt att hitta rätt värden av HSV minimi- och färgen på det objekt som kommer att följas. Spara dessa värden, gjordes två vektorer med minimal HSV och HSV högsta färg objektet som värden: minsta nyans (42) minst mättnad (62) minsta ljusstyrka (63) maximal nyans (92) maximal mättnad (255) maximal ljusstyrka (235). Så nästa steg för att skapa en binär bild, kan relevant information begränsas endast i samband med dessa värden. Dessa värden för att begränsa färgmönster för objektet. En funktion för att jämföra pixelvärdena med standard värderar av den införda vektorn användes. Resultatet blev en binär bild som ger endast ett värde för varje pixel.
- Efter att ha gjort segmentering, vilket resulterar i den binära bilden, bör det noteras att buller är kvar i ramen. Dessa ljud är faktorer som hindrar segmentering (inklusive att få den faktiska storleken) för objektet. Att fixa (eller försöka fixa) detta problem, det var nödvändigt att tillämpa en morfologisk förändring genom operatörer i ramen, så att pixlarna togs bort som inte uppfyller standarden som önskat. För detta användes morfologiska operatören EROSION, som utförde en "ren" i ramen, att minska buller som det innehåller.
- Sedan användes till "Ögonblick" funktion, som beräknar stunder av positiv kontur (vit) med en integration av alla pixlar i konturen. Denna funktion är endast möjligt i en ram redan binarizado och utan buller, så att storleken på konturen av objektet inte ändras av avviker pixlar i ramen, vilket hindrar och redundans i information.
stunder = cv2.moments (imgErode, True)I föreslagna exempel var det nödvändigt att hitta området av contour och dess platsens koordinater i ramen för att göra beräkningar av ompositionering chassit. Beräkningen av området av objektet utför den binära summan av positiva, generera variabeln M00 och registreras i variabeln "område":
område = stunder [m00]
Specificitet av kontur refererar till ett objekt, inte en polygon. Detta värde visar en ungefärlig yta på positiva pixlar (vit) som gör upp objektet. Om detta värde är null område, ignoreras förekomsten av ett objekt färg behandlas (om den "gröna" färgen) i ramen. Denna funktion hjälper utföra rörelsen av roboten närmar sig och distanserar av objektet, försöker behandla problemet med djup. Det vill säga det faktum att objektet närmar sig eller distansera alltför chassi.Och från den riktade område var möjligt, ange koordinaterna för objektet i denna ram. Var används parametrar erhålls stunder funktion som hittade sin samordnade för koordinaterna för objektet. Men detta var samordnat utifrån centroiden för objektet, hittade bara om objektet är större än noll. Denna funktion var viktigt att göra rörelsen av horisontella och vertikala justering av roboten för att öka den grad av friheten och minimera begränsning av rörelsefriheten för objektet kan identifieras. Använda området för parametern objekt och i kombination med M00 x och y parametrar stunder av funktion, det var möjligt att hitta koordinaterna (x, y).
Således de värden fick i koordinaten (x, y) hänvisar till placeringen av hittade segmentering av objektet i förhållande till bildrutan och att underlätta tolkningen av den information som dras från av koordinatinformationen, en funktion som ritar en cirkel på centroiden var tillämpas objektet.
Resultatet:
Steg 6 kommer att demonstreras under loppet av nästa steg man måste förklara konfigurationen av motorer och andra delar innan du fortsätter med denna del.
Den bifogade skriften "SVC.py" hjälper dig att börja förstå hur systemet fungerar. Om problem ge din Raspberry Pi, rekommenderar jag granska den installerade bibliotek eller kontakt.
Hur ska köras ett skript python i Raspberry Pi? Klicka här!
Vi kommer att fortsätta med församlingen roboten? Få arbeta!