Stap 16: OpenCV begint
87 88 89 90 91 92 93 94 95 96 97 thresh = cv2.inRange(hsv,np.array((152, 105, 127)), np.array((180, 145, 167))) 99 100 101 102 103 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 | #This is finding the average of the X cordinate. Used for establishing#a visual link with the robot.#X cxAvg = cxAvg + cx cxAvg = cxAvg /2#Y cyAvg = cyAvg + cy cyAvg = cyAvg /2#//Finding the Target Angle/////////////////////////////////////#Target cordinates.#Randomizing target.if newTarget =="Yes": tX = random.randrange(200, 400, 1) tY = random.randrange(150, 350, 1) newTarget ="No"if iFrame >=170: if tX > cxAvg -45and tX < cxAvg +45: print"Made it through the X"if tY > cyAvg -45and tY < cyAvg +45: print"Made it through the Y" newTarget ="Yes" dots=dots+1 |
88: Dit verhoogt de teller van onze frame.
91: We lezen één frame van de webcam die wij verklaard, pet, op lijn 44.
OPENCV! Sorry, ik hou gewoon van het zo veel.
Dus, nu weet je dat ik heb niet gelezen de OpenCV-handleiding. En niet vertel me, "wat! Ga RTFM!" Ga je RTFM! Ik heb een baan die ik hou van een vrouw en kind. I 'm just gonna prutsen met onzin en krijgen om te werken. Maar deze houding zal beginnen te tonen als we gaan door middel van de OpenCV oproepen, aangezien ik niet van hun innerlijke werken weet. In plaats daarvan, ik ga te bieden mijn beste gok, en zoals altijd, als iemand wil mij corrigeren of bieden betere uitleg, ik post en krediet geven.
94: Dit vervaagt de afbeelding die we kregen. Je kan zeggen, "maar ik dacht dat hogere resolutie beter was?" Het is. Maar rafelige randen en kleurruis zijn niet. Een eenvoudige vorm is veel gemakkelijker voor math van OpenCV teruglopen dan complex. Dus vervagen we het beeld een beetje, geeft ons zachtere randen te behandelen.
Ook, vervagen melds kleuren, dus als er 2 blauwe pixels zijn en 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 rode pixel in een groep, dan is het geworden 3 blauw-paarse pixels. Dit heeft de handige voordeel voor het versnellen van de beeldverwerking alot. Hoeveel? Ik weet niet dat ik niet RTFM.
97-100: Onze afbeelding wordt geconverteerd naar een histogram hier. Met de afbeelding in de vorm van een histogram laat ons toe om gebruik van de verklaringen van de vergelijkende mee. Wat we gebruiken voor is om zich te ontdoen van alle kleuren behalve degene die we proberen te vinden. Dit geeft ons een zwart-wit beeld, de witte wordt alleen de kleur die wij zijn op zoek naar. Lijn 98 is waar uw kleur is gedefinieerd (het is de twee "np.array"s). In de volgende stap die ik zal gaan door hoe om uw robot de exacte kleur te selecteren.
103: Vindt de contouren van het witte gebied in de resulterende afbeelding.
107-112: OpenCV vervolgens telt hoeveel pixels in elk contour die wordt aangetroffen in het webcambeeld. Het veronderstelt welke heeft de meeste witte oppervlakte (aka, "massa") is ons doel.
114-117: Nadat we welk object dat we willen volgen besloten, nu moeten we om te komen met de coördinaten van het zwaartepunt. Dat is wat lijnen 115-116 doen. Ik heb het onderzoek op de wiskunde er niet gedaan, maar ik denk dat het gemiddelde van de momenten van de veelhoek en roept het gemiddelde centroid X of Y, afhankelijk van de berekening. Maar voel je vrij om te corrigeren of beter uitleggen.
121-127: Hier lock wij op de massa die wij geloven is de robot. Het begint met het verzamelen van een 150 monsters voordat het zal verklaren is het bijhouden van de grootste massa. Maar nadat het is begonnen om bij te houden van de grootste massa, dan proberen we te blijven vergrendeld op het. Dit is de lijn 122-127. Kortom, toestaan we dat de massa te verplaatsen genoeg om te worden beschouwd als een beweging door de robot, maar niet zozeer dat lawaai (zoals een verdwaalde hand in de webcambeeld) zal leiden tot de tracering uitschakelen van de robot.