tutorial para examples example descargar c++ opencv

c++ - para - cómo mostrar una estera en Opencv



opencv examples (1)

Para el tapete que almacena imágenes, es fácil mostrarlo usando imshow Pero si el tipo de datos de Mat es CV_32FC1, ¿cómo puedo mostrar este tapete?

Intenté imshow, pero la figura de la pantalla es totalmente blanca y cuando hago zoom int, todavía está totalmente en blanco, y no puedo ver los números de flotación en mat.

¿Hay alguien que sepa mostrar toda la matriz de tapete?

pd: gracias por responder. Publicaré algunos códigos y figuras para mostrar más detalles: códigos:

Mat mat1; mat1 = Mat::ones(3,4,CV_32FC1); mat1 = mat1 * 200; imshow("test", mat1); waitKey(0); Mat dst; normalize(mat1, dst, 0, 1, NORM_MINMAX); imshow("test1", dst); waitKey(0); mat1.convertTo(dst, CV_8UC1); imshow("test2", dst); waitKey(0); return 0;

salida:

después de acercar un 150%:

Luego, después de hacer un acercamiento del 150%, podemos ver que ''test'' es totalmente blanco y no podemos ver los valores de sus elementos. ''test1'' es totalmente negro y todavía no podemos ver los valores de sus elementos. Pero para ''test2'', es gris y podemos ver el valor de su elemento que es 200.

¿Este experimento significa que imshow() solo puede mostrar CV_8UC1 y no podemos mostrar ninguna otra datatyes?


Si la image es una estera tipo CV_32F, si la imagen es de punto flotante de 32 bits, imshow () multiplica los valores de píxel por 255, es decir, el rango de valores [0,1] se asigna a [0,255]. Por lo tanto, su imagen de coma flotante debe tener un rango de 0 ... 1.

Esto mostrará una imagen CV32F, sin importar el rango:

cv::Mat dst cv::normalize(image, dst, 0, 1, cv::NORM_MINMAX); cv::imshow("test", dst); cv::waitKey(0);