Stap 17: OpenCV: Selecteer uw kleur
#Slope dx = cxAvg - tX dy = cyAvg - tY #Quad I -- Goodif tX >= cxAvg and tY <= cyAvg: rads = atan2(dy,dx) degs = degrees(rads) degs = degs -90#Quad II -- Goodelif tX >= cxAvg and tY >= cyAvg: rads = atan2(dx,dy) degs = degrees(rads) degs = (degs *-1) #Quad IIIelif tX <= cxAvg and tY >= cyAvg: rads = atan2(dx,-dy) degs = degrees(rads) degs = degs +180#degs = 3elif tX <= cxAvg and tY <= cyAvg: rads = atan2(dx,-dy) degs = degrees(rads) +180#degs = 4 | 180 181 182 183 184 185 186 187 188 189 |
Deze bijzondere lijn definieert welke kleur u, in het bijzonder de twee sets met waarden zoekt: 130, 170, 110 en 190, 190, 200. Deze twee waarden ingesteld de ondergrens en de bovengrens van de kleur die u zoekt te vinden. De reden waarom we boven- en ondergrenzen, die we kleur drempels noemen, is omdat onze robot verschillende lichten doorlopen zal. Verschillende lichtbronnen hebben de neiging om te wijzigen hoe de webcam leest de kleur.
De kleurindeling die we gebruiken is HSV, wat voor kleurtoon, verzadiging, waarde staat. Later, zal ik waarschijnlijk schrijven code schakelt de robot binnen onze eigenlijke programma, maar voor nu ik gebruik Gimp en de volgende methode:
- Instellen van uw webcam de in het gebied je zal gebruiken, net als u klaar bent om hem te controleren.
- Voer het programma van de webcam aangesloten in stap 10.
- Terwijl de webcam-programma is het bekijken van uw robot, druk op Ctrl + Print Screen
- Open Gimp.
- Druk op Ctrl + V om het plak de schermopname in gimp.
- Nu vinden de kleur Selector tool.
- Selecteer de belangrijkste kleur van uw robot.
- Dubbelklik nu op het plein van de kleur op de werkbalk.
- Een venster moet openen met kleurinformatie met betrekking tot de kleur die u hebt geselecteerd, uw robot knallen.
- Nu, de drie nummers moet dicht bij wat we nodig hebben. Helaas moeten we omzetten OpenCV van HSV nummerreeks van Gimp HSV nummerreeks. U ziet, HSV waardebereik in Gimp is H = 0-360, S = 0-100, en V = 0-100. In OpenCV, H = 0-180, S = 0-255, V = 0-255. Dus, sommige conversie moet plaatsvinden.
- Uit mijn selectie eindigde ik met Gimp aantallen, H: 355, S:50 en V:61. Ik kon krijgen alle fancy en berekenen van de juiste aantallen, maar ik figuur 180 (OpenCV) is de helft van 360, dus voor mijn H ik gewoon gedeeld door twee: 177. De andere twee denk ik beetje bij een beetje. Ik sloeg een double en toegevoegd van 25, S: 125 en V: 147.
- Op het einde gaf dit mij middelste getallen. Maar ik wilde een bovenste en onderste drempel, dus ik nam elk nummer en 20 to give me een lagere afgetrokken, en 20 to give me een bovenste toegevoegd.
- Het resultaat van mijn robot was:
#Convert float to int targetDegs =int(math.floor(degs)) #Variable to print the degrees offset from target angle. strTargetDegs =" "#Put the target angle into a string to printed. strTargetDegs =str(math.floor(degs)) #///End Finding Target Angle//////////////////////////////////// | 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 |
Ik zal proberen om een kleurenkiezer code in het programma om dit hele ding een makkie.
Als u lees meer willen zou, berichten twee goede op Stack Overflow.