Paso 16: OpenCV comienza
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: Esto incrementa el contador.
91: Leer una sola imagen de la webcam que nos declaró, cap, en la línea 44.
OPENCV! Lo sentimos, simplemente me encanta tanto.
Así que, ya sabes que no he leído el manual de OpenCV. Y por favor no me dicen, "¡ Qué! ¡ Vaya RTFM!" Vas RTFM! Tengo una esposa, niños y un trabajo que me encanta. Solo voy a jugar con mierda y hacer que funcione. Pero esta actitud comenzará a medida que avanzamos a través de las llamadas de OpenCV, puesto que no conozco su funcionamiento interno. En cambio, voy a ofrecer mi mejor suposición, y como siempre, si alguien quiere corregirme u ofrecen la mejor explicación, te post y dar crédito.
94: Este desenfoca la imagen que tenemos. Usted puede decir, pero pensé que era mejor una resolución más alta?" Es. Pero no son los bordes dentados y el ruido de color. Una forma simple es mucho más fácil para las matemáticas de OpenCV para envolver luego uno complejo. Por lo tanto, difumine la imagen un poco, dándonos los bordes más suaves para hacer frente a.
También, blur combina colores, así que si hay pixeles azul 2 y 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 pixel rojo en un grupo, luego convertido en 3 píxeles de color azul. Esto tiene la ventaja de nifty de acelerar el proceso muchode imagen. ¿Cuánto? No sé que yo no RTFM.
97-100: Nuestra imagen se convierte en un histograma aquí. Tener la imagen en un formato de histograma nos permite usar declaraciones comparadas con ella. Qué usamos para es deshacerse de todos los colores excepto la que estamos tratando de encontrar. Esto nos dará una imagen blanco y negro, el blanco es sólo el color que buscamos para encontrar. Línea 98 es donde se define su color (es el dos "np.array"s). En el siguiente paso voy a salir a través de cómo seleccionar el color exacto de tu robot.
103: Encuentra los contornos de la zona blanca en la imagen resultante.
107-112: OpenCV entonces cuenta cuántos píxeles son en cada contorno que encuentra en la imagen de la webcam. Supone que tiene la zona más blanca (también conocido como "masa") es nuestro objeto.
114-117: Después decidimos qué objeto queremos seguir, ahora tenemos que llegar a las coordenadas del centroide. Es lo que hacen las líneas 115-116. No he hecho la investigación en la matemática hay, pero creo un promedio de los momentos del polígono y llama la media centroide X o Y, según el cálculo. Pero, no dude en corregir o explicar mejor.
121-127: Aquí nos calará sobre la masa que creemos es el robot. Comienza por la recogida de muestras de 150 antes de que estado es el seguimiento de la masa más grande. Pero después comienza a seguir a la masa más grande, luego tratar de quedarse trabado a él. Esta es la línea 122-127. En esencia, dejamos la masa a mover lo suficiente como ser considerado un movimiento por el robot, pero no tanto ese ruido (como una mano perdida en la imagen de la webcam) hará el seguimiento apagar el robot.