Как преобразовать OpenCascade Pixmap в формат OpenCV Mat? - PullRequest
0 голосов
/ 17 октября 2019

Я работаю с примером проекта OpenCascade, и мне нужно извлечь 2D-снимок сцены 3DViewer и преобразовать его в формат Opencv Mat. Я попробовал приведенный ниже код, и если я буду использовать imshow для отображения снимка, я получу полный черный вид. PixMap по умолчанию является 3-канальным RGB-изображением.

Image_PixMap img;
getViewer()->ActiveView()->ToPixMap(img, 1024, 1024);
cv::Mat* mat_img = new cv::Mat(1024, 1024, CV_8UC3);
img.InitWrapper(Image_Format_RGB, mat_img->ptr(), 1024, 1024);
Standard_EXPORT virtual bool InitWrapper (Image_Format thePixelFormat,
                                            Standard_Byte*       theDataPtr,
                                            const Standard_Size  theSizeX,
                                            const Standard_Size  theSizeY,
                                            const Standard_Size  theSizeRowBytes = 0);
 Standard_Boolean ToPixMap (Image_PixMap& theImage,
                             const Standard_Integer theWidth,
                             const Standard_Integer theHeight,
                             const Graphic3d_BufferType& theBufferType     = Graphic3d_BT_RGB,
                             const Standard_Boolean      theToAdjustAspect = Standard_True,
                             const V3d_StereoDumpOptions theStereoOptions  = V3d_SDO_MONO)
...