Que leí una imagen que tipo de es CV_8UC1, y quiero convertirlo a CV_32FC1.pero cuando uso convertTO() a la función mi imagen vuelto completamente blanco y no sé por qué!

Mat Image(512,512,CV_32FC1);     
Image = imread("C:\MGC.jpg",CV_LOAD_IMAGE_GRAYSCALE);   

///show image
namedWindow("pic");
int x = 0; int y = 0;
imshow("pic", Image);

cout<<Image.type()<<endl;
Image.convertTo(Image,CV_32FC1);
cout<<Image.type()<<endl;

////show converted image 
namedWindow("pic1");
imshow("pic1",Image );
  • por cierto, tu Imagen inicial(512,512,CV_32FC1); alloction acaba de ser sobreescritos por inread. acaba de salir de vacío.
InformationsquelleAutor N_Kh | 2015-05-21

3 Comentarios

  1. 6

    Porque visible gama de 32FC elemento del tipo de imágenes es [0:1] (para imshow).
    Intenta esto.

    Image.convertTo(Image,CV_32FC1, 1.0/255.0);
    
    • Smorodov : gracias por su respuesta.Ha funcionado correctamente.Tengo otra pregunta.Si me cambio de algunos píxeles ¿cómo puedo convertir a CV_8UC1 tipo de nuevo? He utilizado la Imagen.convertTo(Imagen,CV_8UC1), pero se volvió completamente negro.
    • Imagen.convertTo(Imagen,CV_8UC1, 255.0);
    • el módulo tiene que ser importados en la orden para que esta conversión?
  2. 0

    Los métodos utilizados por Andrey no parecen existir en la actual (v3.4) opencv para python.
    Aquí es una solución alternativa que utiliza scikit-imagen

    http://scikit-image.org/docs/dev/user_guide/data_types.html

     import cv2
     from skimage import img_as_float
    
     cap = cv2.VideoCapture(0)
    
     ret, frame = cap.read()
    
     image1  = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)
    
     image2 = img_as_float(image1)
    
     cv2.imshow('IMAGE1',image1)
     cv2.imshow('IMAGE2', image2)
    
     while(1):
         k = cv2.waitKey(100) & 0xff
         if k == 27:
            break
    
     cap.release()
     cv2.destroyAllWindows()
    
  3. 0

    Es un problema de escala. cvtColor es difícil en el rango del tipo de datos. Leer esta aquí.

    Si cambia de CV_8U aCV32F y frente a los rangos no se escala por sí mismos, Se debe indicar la escala de medida.

Dejar respuesta

Please enter your comment!
Please enter your name here