Si además quieres enviarnos un Artículo para el Blog y redes sociales, pulsa el siguiente botón:
Como ya estoy de medio vacaciones, pero a la vez no tengo demasiados medios técnicos, me dedico a recopilar datos y a procesarlos como puedo en mi cabecilla, para poder hacer cosas en verano.
Como sabeis estoy con el tema del Bluetooth... a falta de hacer algunas pruebas con otro ordenador, el tema del TouchPad... necesito más medios que mi portatil... y... ahora viene el proyecto guapi guapi... Visión artificial con una simple webcam, entonces aqui vienen mis preguntas y aclaraciones:
·Sé que es posible, porque si no me equivoco Golfus Hispanicus lo emplea, asi como otros proyectos como los de esta chiquita tan maja: Mavis
·¿Cómo se empieza en este mundito?
·¿Qué librerías usais para obtener imágenes de la webcam?
·¿Qué librerías usais para procesar la imagen?
·¿Es imprescindible programar el sistema en C?
·¿Tenemos algun proyecto de ejemplo?
Yo estoy comenzando con la librería WebCam.dll, pero me temo que es muy incompleta, y además consume demasiados recursos comparándolo con el proyecto de Mavis. Aun así, tengo un programa hecho que lo único que tiene es un botón, con el que al pulsarlo, se copia la imágen de la webcam en un control PictureBox... me imagino que es un primer paso en este mundo, y que me quedan miles de caminos que recorrer, pero esta librería no sé si da mucho más de si, de modo que me gustaría que alguno que haya trabajado con esto me eche un cablecillo.
Seguiré informando. Muchas gracias por la ayuda.
Ángel
-Tu programa conecta la web cam en un control.
-de la webcam capturas un frame.
-Pasas el frame como Bitmap.
-Tratas la imagen binaria con librerias especificas.
-Duevuelves los datos necesarios, y/o una imagen tratada.
Voy bien?
Yo no se hacerlo de otra forma.... este procedimiento es el mismo que yo he usado pero claro... ahora llega el punto 4... "Tratar la imagen"... ahí es donde te vas a hartar de reir... jajaja
Si vas a usar librerias opensource me parece genial ya que imaginate yo... tengo que buscar un color, por ejemplo... blanco... bien, coge un fondo oscuro, pon una pelota de ping-pong y captura la imagen, ahora pasala a blanco y negro, esto es, una imagen totalmente negra donde la silueta de la pelota se vea claramente.... despues de un ratito verás que en toda la imagen apenas hay un solo punto blanco puro por lo que ahora empiezas con el tema de las "tolerancias de color", esto es... que el "gris claro" lo lea como blanco, pero... ¿hasta que tonalidad de gris?...
Bueno, pones un valor "ajustable" para ir graduando hasta conseguir el objetivo y podrás comprobar que por mas que te esfuerzas obtienes un ovalo... ¿por que?... pues por que la parte baja de la pelota está en sombra (de la misma pelota) y no hay forma de leer eso que a tus ojos es evidentemente blanco como tal...
Por fin... lo conseguí... jajajaja, ahora aumenta un poco la luz de la habitación... ¡¡¡ hasta el fondo oscuro lo captura como blanco !!!... a bajar el ajuste de color... ¡¡¡ ¿pero esa segunda bola blanca de donde sale? !!!... no hay pelota en ese sitio... pero justamente es donde da el reflejo de la bombilla del techo... jajajaja
Aplica esto para que funcione con blanco, negro, amarillo, rojo, azul y verde y ademas diferenciando siluetas.... esta fué mi lucha para el sistema de Golfus Hispanicus, ademas de tener que darle las ordenes pertinentes por USB a los motores y actuadores varios... Es volverse loco... literalmente...
Lo dicho con las librerias openCV... tu tira que yo te sigo...
furri.
furri, Eres un crack macho... vaya currote debio tener aquello.
Me alegra saber que al menos tengo las ideas claras... pero es que ayer intente hacer una especie de buscador de parecidos entre dos imagenes, y ademas de que se tiraba casi 8 segundos para procesar, no obtenia ningun resultad valido... me las detectaba como iguales amas, y el proceso era btte sencillo:
-Pillas dos imagenes
-Recorres los pixeles uno a uno comparando los tonos de rojo
-Si el tono es igual, es decir, diferencia entre -5 y 5, pone un punto rojo en la primera imagen...
-Resultado: Una imagen roja entera, lo que quiere decir que... o las dos imagenes eran exactamente iguales... cosa imposible, o soy un gañan.
Para esto no hace falta ninguna camara, aunque yo la estaba usando en un control para tomar las muestras.
¿como "extraes" el valor del rojo?... yo me hice una función hace años para transformar del valor único de color a RGB, pero vamos que en internet las hay a millares...
yo que tu miraba ese proceso a ver si siempre estas obteniendo 0 y por eso te detecta todos los colores iguales...
¿En que lenguaje lo estás haciendo?
furri.
Lo hago creando un objeto img como Bitmap, pasandole la imagen, y usando la propiedad
img.GetPixel(x, y).R()
La R selecciona el canal Rojo, igualmente, puedes seleccionar G y B.
he intentado hacer un programilla en un mom, epor no me sale nada claro, esta tared en casa continuare con ello.
Estas usando .NET ¿me equivoco?... ¿VB, C++, C#?