[Jderobot-dev] Error de imagen en opencv por triplicado

Oscar Garcia oscar.robotica en linaresdigital.com
Jue Oct 25 16:02:39 CEST 2012


El 25/10/2012 8:40, Pablo Mayor Sanchez escribió:
> Hola Oscar , aquí tienes el código , supongo que sera lo que comentas 
> "CV_8UC3"  , en concreto la imagen que se triplica es de la image3


Voy a echarle un vistazo.


>   CvSize s = cvSize(image3.width, image3.height);
>


Mejor:
CvSize s = cvGetSize(image3);



>        Mat *in = cvCreateMat(image3.height,image3.width,CV_32FC3 );
>


¿Realmente es necesario que crees la imagen con tres canales de coma 
flotante de 32 bits? Piensa que luego la comparación escalar la haces 
con enteros y fíjate que luego creas imágenes de 8 bit y 3 canales:


>         cvConvertImage(&image3,in);
>         Mat myIplImageMat= cvCreateImage(cvSize(image3.width, 
> image3.height), 8, 3);;
>


Esto lo puedes hacer mejor con cvGetSize o bien reusando la variable "s" 
que creaste anteriormente:
Mat myIplImageMat= cvCreateImage(cvGetSize(image3), 8, 3);
o
Mat myIplImageMat= cvCreateImage(s, 8, 3);


>         inRange(in, Scalar(0, 0, 0), Scalar(132, 220, 255), 
> myIplImageMat);
>


Algo va mal, por un lado usas una imagen de entrada en 3 canales de 
color de 8 bit y por otro lado creas la imagen de destino como de 3 
canales de color en coma flotante de 32 bits... ¿has pensado en unificarlo?

Piensa que TODOS los argumentos tienen que tener el mismo tamaño y tipo 
de dato y que la salida es CV_8U. Dará 0 si el valor está fuera y 255 (o 
todo a 1) si está dentro.

Trata de arreglar esa parte, contando con que el tipo de imagen de 
salida no tiene el formato correcto (te recuerdo, CV_8U), y nos cuentas.

Un saludo.


More information about the Jde-developers mailing list