Programación Específica > Matlab

 precesar imagen.....

<< < (2/3) > >>

Froddo:
Hola, esperando que esten bien, les cuento :

La comparación realizada con la sentencia

--- Código: Text --- if (max(max(c)==1);  Ha resultado, pero tiene que ser en condiciones óptimas o sea  que el programa no es muy robusto, ya que la mayoría de las veces reconoces pixeles que no son el color rojo.., por ejemplo, si tengo la cámara en un color negro  a veces reconoce un pixel blanco producto de la luz...,
por eso estoy intentando restringir el intervalo de los planos S y V.

Lo que tengo pensado es aplicar la siguiente linea de comando:

--- Código: Text --- cam=videoinput('winvideo');preview(cam);for 0:15;pause(1);foto=getsnapshot(cam);%consigue la foto de la cámarab=rgb2hsv(foto);%cambio al plano HSVH=b(:,:,1)>0.92;S=b(:,:,2)>0.4 && b(:,:,2)<0.8;V=b(:,:,3)>0.4 && B(:,:,3)<0.6;c=??????  Mi duda es si multiplico o sumo los planos y por qué???, además de saber si tien lógica lo que he puesto...
Bueno me despido y cualquier ayuda es muy bien recibida...
Salu2 :kicking:  :kicking:

Geo:
En el código que pones, donde se cumplan las condiciones habrá 1 (unos), donde no, 0 (ceros). Me parece buena idea multiplicarlos, donde no coincidan los tres, el resultado será 0, para tener un 1 como resultado, los tres planos deben cumplir las condiciones :).

Suerte :).

Solo me estoy preguntando una cosa, bien podría hacerse lo mismo sin la conversión a HSV, usando el espacio RGB ¿no? Una opción para robustecerlo sería hacerlo en los dos espacios :).

Froddo:
Hola compañero, yo de nuevo :P ,te cuento:
He agragado el siguiente código:

--- Código: Text --- cam=videoinput('winvideo'); preview(cam);for 0:15;pause(1);foto=getsnapshot(cam);%consigue la foto de la cámarab=rgb2hsv(foto);%cambio al plano HSVH=b(:,:,1)>0.92;S=b(:,:,2)>0.4 && b(:,:,2)<0.8;V=b(:,:,3)>0.4 && B(:,:,3)<0.6;c=H*S*Vc = uint8(c);red(:,:,1) = foto(:,:,1).*c;red(:,:,2) = foto(:,:,2).*c;red(:,:,3) = foto(:,:,3).*c;if (max(max(red))==1);fprintf(SerPIC,'%c','A');imshow(red);endend  
Al ejecutar el programa matlab sigue arrojando el error:

--- Código: Text ---??? Operands to the || and && operators must be convertible to logical scalar values. 
Otra cosa, cuando no agrego los intervalos de los planos S Y V, osea solo dejo el intervalo del plano H, la sentencia if, no envia el caracter que quiero.., que puede ser???, tengo los puertos com1 abiertos y probados, pero cuando ejecuto el programa no envia el caracter y si muestra la imagen en rojo?????

Geo,sobre el por qué trabajar en el plano HSV, fue por qué supuestamente es más robusto que RGB y me daría menos problemas.. :D  :D

Salu2 y muechas gracias nuevamente por tu paciencia ;)
 :kicking:  :kicking:

Geo:
Prueba con & en lugar de &&.

Esto:

--- Código: Text ---c = H * S * V podrías sustituirlo por esto:

--- Código: Text ---c = H & S & V (debería ser el mismo resultado).

En cuanto al problema con la sentencia if, no te entendí muy bien, pero creo que puedes resolverlo por tu cuenta :). Suerte.

Froddo:
ok, gracias, voy a probar con tu comando, sobre la sentencia if, ya lo he solucionado, he agregado un while :D  :D

Salu2 :beer:

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

[*] Página Anterior

Ir a la versión completa