fbpx

Expresate

Si además quieres enviarnos un Artículo para el Blog y redes sociales, pulsa el siguiente botón:

Avisos
Vaciar todo

Visión artificial

467 Respuestas
43 Usuarios
0 Reactions
535.3 K Visitas
mif
Respuestas: 1095
 Mif
Topic starter
(@mif)
Noble Member
Registrado: hace 19 años

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

Responder
466 respuestas
Kaelyn
Respuestas: 9
(@kaelyn)
Active Member
Registrado: hace 17 años

exacto tengo q realizar lo mismo q la cmucam 😀
no tiene gracia q me compre la cmucam, seria trabajo q yo no haria
😀 😛

Responder
Kaelyn
Respuestas: 9
(@kaelyn)
Active Member
Registrado: hace 17 años

ya cuando solucione todos mis problemas se los presnto aqui 😛

oka gracias es q soy novata 🙁 me entienden

😉

Responder
ranganok
Respuestas: 3875
(@ranganok)
Ardero
Registrado: hace 19 años

Kaelyn, intenta no escribir un post para cada frase ya que aumenta el tamaño del tema innecesariamente, si te has olvidado de poner algo puedes editar el post anterior.

S2

Ranganok Schahzaman

Responder
oab_boa
Respuestas: 13
(@oab_boa)
Active Member
Registrado: hace 17 años

Buen Dia amigos, este es mi primer mensaje ya que hace poco que estoy registrado, estoy siguiendo a modo de tutorial este foro, usando builder-C++ 6. Estoy teniendo complicaciones en el acceso a un pixel de la imagen usando punteros, lo que tengo es esto:

unsigned char *Puntero;

Puntero = Imagen.punt.lpIndex;

for(int x=0; x<320; x++){
for(int y = 0; y<240; y++){
r = *Puntero; //el color rojo está en el primer byte
g = *(Puntero+1); //el verde en el segundo
b = *(Puntero+2); // y el azul en el tercero

*Puntero = r+10;
*(Puntero+1) = g+10;
*(Puntero+2) = b+10;
Puntero += 3; //subo de tres en tres bytes
}
}

Lo cual anda perfectamente pero haciendo unrecorrido secuencial del puntero de 3 en 3 bytes

Estoy teniendo problemas de Violacion de acceso si quiero hacer un acceso directo en la forma:

Puntero += 3*(320*fila+culumna); en vez de usar

Puntero += 3;

solo me accede con un maximo de fila=14, columna=10.

Se entiende el problema?

Le paso a alguien o solo estiy haciendo mal uso del puntero.

Gracias y saludos a todos.

Responder
ranganok
Respuestas: 3875
(@ranganok)
Ardero
Registrado: hace 19 años

Creo que el problema es que estas haciendo un mal uso del puntero:

Tienes un array Imagen[320][240][3] es decir de 230400 bytes (=320*240*3). Es decir que tienes un máximo de 240 filas y 320 columnas.

Para posicionarte dentro de un pixel de la imagen directamente tienes que ir a la fila X y la columna Y de la siguiente forma:

Puntero = 3 * (320 * X + Y) + Imagen.punt.lpIndex;

El 3 es porque cada pixel tiene 3 bytes (R,G,B), 320 porque cada fila tiene 320 columnas e Imagen.punt.lpIndex porque es la posición de memória que marca el inicio del Array.

Si vas haciendo

Puntero += 3*(320*X+Y);

dentro del bucle (for) quiere decir que cada iteración en vez de irte al píxel siguiente harás un salto de X filas e Y columnas por lo que es posible que al poco rato te salgas del Array (por culpa del +=).

S2

Ranganok Schahzaman

Responder
Página 89 / 94
Compartir: