Hur till spår din Robot med OpenCV (14 / 28 steg)
Steg 14: OpenCV funktion börjar
42 |
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
defOpenCV():
#Create videoinspelning
Cap = cv2. VideoCapture(0)
#Globalizing variablesglobal cxAvg #<---jag minns inte varför... globala cxFound
globala iFrame
globala intRx
globala rx
globala tranx
#Flag för att få ett nytt mål.
newTarget = "Ja" #Dot counter. Han är en hungrig flodhäst...
prickar = 0 #This innehar bot centroiden X & Y genomsnittet
cxAvg = 0
cyAvg = 0 #Stores gamla position för rörelsen bedömning.
xOld = 0
yOld = 0 #Clearing följetongen skicka sträng.
printRx = ""
42: här börjar vi denna funktion som gör det mesta av arbetet, OpenCV():. Det är en av funktionerna som kommer att vara kopplade på linjer 345-347.
44: vi öppnar webbkameran och ge det Smeknamn cap. Om jag minns rätt "0" i parentesen avser vad kameran kommer först på din USB-bussen, så om du har mer än en kamera kan du ange genom att ändra detta nummer, t.ex., cap = cv2. VideoCapture(3). Märke vi kallade OpenCV modul cv2, så vi använder modulen OpenCV tillgång webbkameran.
46-52: bara att göra variablerna vi förklarade arbete inom denna funktion. Detta kanske inte behövs, men hey, jag läsa inte hela Python manualen.
55: Detta är bara en sträng flagga som är vänt för att berätta för datorn att generera ett nytt mål för roboten. Observera att vi först ställa in den till "Ja" vilket innebär att första gången vi kör genom denna funktion ett mål måste genereras.
58: Detta är en heltalsvariabel att räkna hur många prickar roboten har "åt."
OK, innan jag får nästa lite behöver jag ta en minut och förklara hur vi jobbar med att faktiskt få koordinaterna för vår robot. Som ni vet gör OpenCV hårt arbete för oss, ger oss den X- och Y-koordinaten för den största röda fläcken på skärmen. Dock är koordinaterna det ger oss den masscentrum. Nu, detta är bara en logisk gissning eftersom jag inte läst hela OpenCV manualen, men jag tror att X eller Y koordinaten som refererar till denna masscentrum kallas centroiden.
Detta kan verkar enkelt. Det är eftersom det är, jag är inte säker på varför vi inte bara kalla det den jävla eller något. Eh, Jaha. Dock blir viktigt när vi gör kollision upptäckt mellan roboten och sitt mål.
61-62: så för att säga, "c" i cyAvg och cxAvg står för centroiden. Så, detta är variabler som kommer att hålla löpande genomsnittliga för den röda fläcken centroiden X och Y koordinater.
65-66: Dessa är säkerhetskopiera variablerna cxAvg och cyAvg och kommer att vara viktiga runt linje 122-127 när vi försöker avgöra om färgen vi spårar är faktiskt roboten eller några andra bit skräp med tillräckligt rött i det till dåre OpenCV.
69: Detta rensar helt enkelt strängvariabel med data som kom från roboten, som robotens rubrik, innan en annan iFrame startar.