Pregunta

Estoy tratando de hacer una pantalla táctil de bricolaje y me gustaría que la introduzca en la feria de ciencias local, pero quería hacerlo en el aspecto de la programación de multi-touch. Mi problema radica en que nunca he trabajado con el análisis de imágenes (desde una cámara web basado en USB). Hola, Me gustaría hacer este proyecto en C #, si es posible (C ++ - si ocurre lo peor)
Necesito analizar un cuadro negro (de una cámara web USB) y luego detectar cuando manchas blancas salir a la luz. ¿Cómo voy a ir haciendo esto? --- ¿existe un método conocido para detectar el cambio vs analizando cada pxl? Si es así un indicador a dónde esto es que sería bueno :) También
¿Cómo voy a conseguir la entrada de la cámara web a través de USB? --- ¿Dónde puedo conseguir las bibliotecas / ddl de?
He visto algunos programas que trabajan con esto, pero convertir las imágenes - que ocupa el tiempo y la velocidad del procesador ... ¿hay una manera de utilizar la imagen imput / datos en bruto?
AYUDA?

¿Fue útil?

Solución

Una vez que tienes tu entrada tendrá (suponiendo que es perfectamente oscuro y perfectamente contraste brillante) tendrá una matriz de valores similar a esto: (escala de grises)

0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 256 0 0 0 0 0
0 0 0 0 0 256 256 256 0 0 0 0
0 0 0 0 0 0 256 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 

Su trabajo tendría que ser al segmento de la sección de los valores de los colores adecuados (256) y para determinar la posición. Para conseguir el movimiento [suponiendo que sólo se está realizando el seguimiento de objetos 1] que tendría que comparar la siguiente posición de la burbuja con el anterior.

En el mundo real, sobre todo con una cámara web que nunca obtener un sólido fondo oscuro con un buen contraste. La webcam es de baja resolución, la luz nunca es perfecto, y se añade ruido a partir de la lente y CCD defectos / aproximación del color.

Además, es posible que encuentre problemas con el seguimiento del movimiento de las gotas (una gota puede misdectected en otra parte de la superficie. Cuando se intenta realizar un seguimiento de dos manchas que se ejecutará en más problemas.

Algunos de estos problemas son:

  1. colisión Blob (¿cómo se sabe lo que va a donde blob)
  2. off transversales Blob (DID las manchas cambian de lado, o en qué las burbujas se mueven en una dirección inversa desde los viajes anterior)
  3. Blob combinar (donde dos gotas se convierten en uno)

Para agarrar la cámara usando C # es posible que desee para comprobar esto hacia fuera. WIA no es el método más rápido de usar para tomar fotografías. Sin embargo, es mucho más fácil de tratar. Mi sugerencia para usted si usted todavía está interesado en hacer esto es dibujar dos imágenes en Photoshop y realizar un seguimiento de los marcadores. No es tan emocionante, pero le ayudará a hacer frente al problema más fácil y relajar la descripción del problema.

Otros consejos

Lo que queremos es "blob de detección". Aquí es un buen hilo sobre una biblioteca blob

Hay un montón de bibliotecas de visión de computadora multi-touch / y software por ahí ya. El mejor recurso para este tipo cosa es wiki.nuigroup.com . Especialmente los href="http://wiki.nuigroup.com/Frameworks_and_Libraries" y sección de Bibliotecas . En la actualidad no es mucho C # info ahí, pero si lo hace saber algo, asegúrese de que lo puso en ese wiki para todos.

También existe la NuiGroup foro de C # (.NET / Silverlight / WPF) sección que pueden serle de ayuda un montón. Hay algunos gran ayuda que ha de darse en esa comunidad.

Como un lugar para comenzar el ingenio de la web cam, me gustaría empezar aquí:

http://www.hanselman.com/blog/CapturingVideoAWebCameraUsingWIANotPossible.aspx

Vas a tener un par de enlaces a seguir, pero yo estoy sugiriendo que empezar aquí, porque este es el artículo donde Scott habla sobre diferentes retos y preguntas comunes y proporciona enlaces a más información.

Para obtener imágenes de la cámara web del AForge marco está muerto fácil de usar! Salida la aplicación de ejemplo de detección de movimiento para los propósitos de recolección de código:)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top