Paso 4: 1er programa de procesamiento de
En el primer bosquejo de procesamiento van a mirar lo que está viendo la webcam y extraemos todos los píxeles rojos por encima de un umbral y guardarlos en otra imagen como píxeles blancos. Luego nos va poner en orden lo un poco y el final con un delgado perfil punteado blanco del sujeto analizado. Luego guardamos esas coordenadas X-Y de pixel blanco en un archivo de texto junto con el ángulo de motor en el chasis.
Otra vez, sólo puede ver la parte 3 de la serie de videos o mirar a través de los comentarios en el bosquejo pero te describen lo que está sucediendo aquí.
Otra vez, me lo salto a la poco importante (sorteo loop). Lo primero, necesitamos crear dos imágenes que son del mismo tamaño como la webcam, 640 por 480. Establecer el fondo en negro.
¿Ahora tenemos que imprimir el ángulo del motor en el ángulo del motor en el archivo de texto, salvo que no hemos leído de Arduino todavía? Está muy bien ya que sabemos ha cero para empezar y la próxima vez ronda debemos leerlo! Necesario hacerlo así para evitar una carga de los caracteres chinos de la escritura para el archivo de texto... PERO antes de que escriba este ángulo, tenemos que lo preceden con ';'. Esto es para que el próximo programa de procesamiento de sepa se trata de un nuevo marco de la cámara web cuando ve un ';'.
A continuación necesitamos comprobar si está disponible, si hay un nuevo marco de la webcam y luego lo leemos! Esto guarda un marco de webcam en el objeto video y podemos obtener valores de los píxeles individuales con video.pixels[i] donde 'i' es el número de píxeles desde la parte superior izquierda a lo largo a la derecha de la pantalla y abajo. Así que esto comienza en 0 y va hasta 640 * 480 = 307200.
Aquí podemos leer del puerto serial para leer el ángulo motor de Arduino. Primero comprobamos que si hay cuatro o más bytes en el búfer serial, un flotador es cuatro bytes, así que tenemos que esperar hasta que el flotador todo está listo para leer. Luego leemos los datos entrantes hasta que golpeó una nueva línea y guardarla como una cadena. Después de eso, tenemos que convertirlo en un flotador y salvar a 'motangle', pero antes de eso, verifique si 'miCadena' realmente nada salvo.
Ahora la diversión poco. Crear un bucle que se repite una vez para cada píxel en la webcam. Compruebe para ver si el pixel actual tiene un valor rojo que es más que un cierto valor umbral. Aquí determinan la sensibilidad del escáner. Cuanto más baja el umbral (tan bajo como 1) cuanto más sensible la exploración, utilizada para escenas muy oscuras donde la luz del láser es muy débil, resultan todas las luces para ello. Puede utilizarse un umbral superior donde hay otra luz en la escena (mantenerlo mínimo aunque) y sólo desea que la línea brillante para ser elegido. ASÍ! Si el rojo es más que este valor, luego coloque un pixel blanco en la misma coordenada de píxeles imagen 1. Esto da una imagen negro donde los bits de red son de color blancos y todo lo demás es negro.
Si utilizamos esta imagen en el programa 3D, seguramente se estrellaría. Es demasiados puntos de datos. También daría un acabado superficial muy grueso a todo porque la línea es difusa y amplia.
Para solucionarlo, Haz otra igual a la anterior para el lazo. Luego realizar un tiempo bucle en bucle. El tiempo bucle sólo funciona cuando se trata de todo un pixel blanco en la imagen 1 y es todavía dentro de la imagen y si es en una línea que es divisible por 5. Esta última parte nos da la parte punteada, es necesario utilizar el modulo de función para hacer esto. El número se utiliza voluntad determinan la resolución vertical de la exploración. Mira el video para una mejor explicación de esto.
En esto mientras que lazo, todo lo que hacemos es contar haciendo uso de 'k' (y 'i' así porque la de lazo no es conseguir una oportunidad de hacerlo). Por lo que este bucle se repetirá mientras esté en una fila de píxeles blancos en la imagen 1, por lo que 'k' es contar cuántos están en una fila. Una vez que llega a un píxel negro otra vez, salta fuera del bucle y toma un pixel blanco en la imagen 2 en medio de eso sólo funcionó a través de la fila.
Entonces usted necesita imprimir la X y Y coordenadas de este píxel blanco nuevo para el archivo de texto! Recuerde que separar las coordenadas con un ',' así que el siguiente bosquejo sabe lo que es. Para imprimir la coordenada X, tenemos que utilizar el modulo función otra vez, nos dará la columna que el píxel está en (i % 640). Y para la coordenada y tenemos que encontrar la fila está en, ello simplemente dividiendo el número de píxeles por el ancho (me / 640). Esto redondea hacia abajo la respuesta que es perfecta porque nos da la fila exacta su sobre!
Luego podemos imprimir las imágenes a la ventana de render para ver lo que está sucediendo. Pongo la webcam feed y imagen 2 a continuación para que pueda ver el resultado final. Para la colocación de las imágenes, la primera de ellas comienza en la posición 0,0 (esquina superior izquierda de la ventana) y la siguiente imagen en 0,480 (mitad de camino hacia abajo a la izquierda).
Luego tenemos que comprobar el ángulo de motor y ver si está enviando el código secreto a dejar el boceto. Recuerde que enviamos a un ángulo de 500 cuando es querer parar, así que solo comprobamos si es más de 450. Si es así, entonces descarga el buffer de archivo de texto y cierre el archivo y salga del programa.