Я работаю с примером проекта 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)