CV :: Imshow no reconocerá un puntero intercalado envuelto en un CV :: MAT -- ++ campo con opencv campo con pointers campo con mat campo con imshow camp Relacionados El problema

cv::imshow will not recognize an interleaved pointer wrapped in a cv::Mat


0
vote

problema

Español

Tengo dos funciones que pasan imágenes usando punteros

Funct 1: Lea una imagen gris del archivo, haga procesamiento de imágenes. Convierta la imagen procesada al color (3 canales). Envolviéndolo en un puntero.

Funct 2: Tener un puntero de imagen como entrada. Envuélvalo en una estera de CV y ​​muéstrelo. Hacer otras cosas.

  funct 1: cv::Mat imIn = cv::Mat(height, width,CV_16UC1); cv::Mat outImage;  // read image std::ifstream ifs{ imagesPathVec, std::ios::in | std::ios::binary }; if ( ifs.is_open() ) {  ifs.read( reinterpret_cast<char *>( imIn.data ), imIn.total() * imIn.elemSize() );  ifs.close();          } imIn.convertTo(outImage, CV_32F);  //... some image processing applied to outImage  outImage.convertTo(outImage, CV_8UC1);  //wrapping the pointer outStreamBuffer in a cv::Mat. cv::Mat outStream(height, width, CV_8UC3, static_cast<uint8_t*>(*outStreamBuffer));  // Try two methods to convert  to color images.  //Method 1. std::vector<cv::Mat> images(3); images.at(0) = outImage; images.at(1) = outImage; images.at(2) = outImage; cv::merge(images, outStream);  //Method 2. cv::cvtColor(outImage, outStream, CV_GRAY2RGB);   Function 2 //wrap the incomming pointer inStreamBuffer in a Mat cv::Mat inImage = cv::Mat(height, width, CV_8UC3, static_cast<uint8_t*>(*inStreamBuffer), width*3);  cv::imshow("m_inImage ", inImage); cv::waitKey(10);   

Ya que es una imagen gris con 3 canales. Intento convertirlo en color llamando cvtColor() Antes de la llamada a cv::imshow()

   cv::cvtColor(inImage, inImage,CV_RGB2BGR);   

Pero los resultados fueron los mismos.

La imagen mostrada es ingrese la descripción de la imagen aquí

Agradecería si puedes ayudarme a mostrar la imagen correctamente. También ayúdame a subestimarnos y qué está pasando. ¿Por qué OPENCV no está reconociendo su propia imagen intercalada?

Original en ingles

I have two functions that pass images using pointers

funct 1: Read a gray image from file, do image processing. Convert the processed image to color (3-channel). Wrapping it in a pointer.

funct 2: have an image pointer as input. Wrap it in a cv mat and show it. Do some other things.

funct 1: cv::Mat imIn = cv::Mat(height, width,CV_16UC1); cv::Mat outImage;  // read image std::ifstream ifs{ imagesPathVec, std::ios::in | std::ios::binary }; if ( ifs.is_open() ) {  ifs.read( reinterpret_cast<char *>( imIn.data ), imIn.total() * imIn.elemSize() );  ifs.close();          } imIn.convertTo(outImage, CV_32F);  //... some image processing applied to outImage  outImage.convertTo(outImage, CV_8UC1);  //wrapping the pointer outStreamBuffer in a cv::Mat. cv::Mat outStream(height, width, CV_8UC3, static_cast<uint8_t*>(*outStreamBuffer));  // Try two methods to convert  to color images.  //Method 1. std::vector<cv::Mat> images(3); images.at(0) = outImage; images.at(1) = outImage; images.at(2) = outImage; cv::merge(images, outStream);  //Method 2. cv::cvtColor(outImage, outStream, CV_GRAY2RGB);   Function 2 //wrap the incomming pointer inStreamBuffer in a Mat cv::Mat inImage = cv::Mat(height, width, CV_8UC3, static_cast<uint8_t*>(*inStreamBuffer), width*3);  cv::imshow("m_inImage ", inImage); cv::waitKey(10); 

Since it is a gray image with 3 channels. I try to convert it to color by calling cvtColor() before the call to cv::imshow()

 cv::cvtColor(inImage, inImage,CV_RGB2BGR); 

but the results were the same.

The displayed image is enter image description here

I would appreciate if you can help me to show the image correctly. Also help me to underestand what it is going on. Why opencv is not recognizing its own interleaved image?

              
       
       

Lista de respuestas


Relacionados problema

2  MATPLOTLIB Transparente Overlay & PDF Transparencia  ( Matplotlib transparent overlay pdf transparency ) 
Supongamos que tengo dos matrices adorables (las que presento son solo ejemplos): $.mobile.transitionFallbacks.*0 quiero trazar a usando imshow: $....

1  Python MatPlotlib, obtener el valor de Pixel después de Colormap aplicado  ( Python matplotlib get pixel value after colormap applied ) 
Mostrar una imagen con MATPLOTLIB usando imshow() . Imshow aplica una lut y me gustaría recuperar un valor de píxel (en X, Y) después de aplicarse LUT. par...

0  Fallo de segmentación en Imshow en OpenCV Python3  ( Segmentation fault in imshow in opencv python3 ) 
He instalado OpenCV en Python por 0_100_01010 Actualmente estoy en MacOS 10.15.6 El 0_100_01011111 Muestra 0_100_01012 en la lista 0_100_01013 ...

0  ¿Cómo puedo reorganizar una serie de tiempo en Python?  ( How can i rearrange some time series in python ) 
Tengo 100 series de tiempo que he mostrado con "imshow" en Python como este (los colores muestran la amplitud de cada serie temporal). Quiero reorganizarlos s...

0  ¿Cómo usar IMSHOW con el eje DateTime con los momentos de tiempo variable y las brechas en los datos?  ( How to use imshow with datetime axis with variable timesteps and gaps in the dat ) 
Esta pregunta explica cómo usar datetime Objetos en X Eje: Fechas en el XAXIS para una parcela de matplotlib con imshow y eso funciona perfectamente. Pe...

2  Superposición PNG en el basemap a través de IMSHOW  ( Png overlay on basemap through imshow ) 
Estoy tratando de superponer un archivo .png de una máscara geoespacial sobre un basemap creado a través de MatPlotlib. La máscara debe cubrir todo en el base...

1  MATPLOTLIB IMSHOW - 'Acelerar' cambio de color en ciertos rangos de valor  ( Matplotlib imshow speed up colour change in certain value ranges ) 
Actualmente estoy trabajando para trazar algunas etiquetas sobre el eje X, Y en IMSHOW, pero más del 95% de los puntos se sientan en el rango 0-0.2, mientras ...

0  Cómo mostrar las imágenes con la misma ampliación en Octave  ( How to show the images with the same magnification in octave ) 
Me gustaría mostrar dos imágenes con la misma ampliación en Octave. Pero la función IMSHOW en Octave no admite la propiedad de "InitialMagnificationnification...

1  Flechas de gradiente de la parcela sobre el mapa de calor con PLT  ( Plot gradient arrows over heatmap with plt ) 
Estoy tratando de trazar flechas para visualizar el gradiente sobre un mapa de calor. Este es el código que tengo hasta ahora: __getitem__3 Esta es la t...

0  Cómo actualizar los datos de MATPLOTLIB's im_show ()  ( How to update data for matplotlibs im show ) 
Actualmente estoy usando la función im_show () de MPL para mostrar la imagen de profundidad de una cámara IFM 3D. Soy capaz de mostrar una sola escena de la...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos