Tengo este código:

  Mat image00=imread("C:\Working Dir\Tests\TestBlending\layer0000.jpg");
  Mat image0;
  image00.convertTo(image0,CV_32FC3);

Pero después de la conversión de mi imagen para flotar, la imagen es en blanco (todos los valores son cero).

Lo que está mal con este código y cómo puedo solucionarlo?

  • El problema no parece ser de aquí… ¿Cómo se puede comprobar que todos los valores son cero ? Podría darnos la salida de printf(" %g %g %g \n",image0.at<Vec3f>(42,42)[0],image0.at<Vec3f>( 42,42)[1],image0.at<Vec3f>( 42,42)[2]); ?
InformationsquelleAutor mans | 2014-03-01

1 Comentario

  1. 7

    Pruebe estos:

    1)
    image00.convertTo(imagen0 CV_32FC3, 1/255.0);

    Mat tipo de Imagen CV_8UC3, el valor es de 0 a 255. Mientras CV_32FC3 es un número entre 0.0 y 1.0, por lo tanto, usted tiene que reducir la escala. Si no estoy equivocado, usted recibe todos los valores cero como el de la imagen consisten principalmente de BGR valores por debajo de 125? Si aún así no funciona, prueba esto:

    2)

    //CvType
     image00.convertTo(image0, CvType.CV_32FC3, 1/255.0); //with or without scaling, try both

    Debería resolver su problema(:

    • ¿Cuál es la «OpenCV3» manera de hacer esto? (es decir, sin el uso de CV_32FC3 sino más bien algo como cv::Mat3f)

Dejar respuesta

Please enter your comment!
Please enter your name here