Opencv 将IplImage转换为osg::Image
如何将OpenCV IplImage正确转换为OpenSceneGraph的osg::Image 这是我目前的方法。但我得到的颜色数据不正确Opencv 将IplImage转换为osg::Image,opencv,openscenegraph,Opencv,Openscenegraph,如何将OpenCV IplImage正确转换为OpenSceneGraph的osg::Image 这是我目前的方法。但我得到的颜色数据不正确 // IplImage* cvImg is a webcam output image captured using cvQueryFrame(capture) osg::ref_ptr<osg::Image> osgImage = new osg::Image; osgImage->setImage(cvImg->width,cv
// IplImage* cvImg is a webcam output image captured using cvQueryFrame(capture)
osg::ref_ptr<osg::Image> osgImage = new osg::Image;
osgImage->setImage(cvImg->width,cvImg->height, 3,
GL_RGB, GL_RGB, GL_UNSIGNED_BYTE,
(BYTE*)(cvImg->imageData),
osg::Image::AllocationMode::NO_DELETE,1);
//IplImage*cvImg是使用cvQueryFrame(捕获)捕获的网络摄像头输出图像
osg::ref_ptr osgImage=新osg::Image;
osgImage->setImage(cvImg->width,cvImg->height,3,
GL_RGB,GL_RGB,GL_无符号字节,
(字节*)(cvImg->imageData),
osg::Image::AllocationMode::NO_DELETE,1);
这可能是一个涉及OpenCV本机BGR颜色空间的问题。您没有提到您正在使用哪个版本的OpenCV,但现代版本定义了要与一起使用的CV\u BGR2RGB
。可能像这样做转换
IplImage* pImg = cvLoadImage("lines.jpg", CV_LOAD_IMAGE_COLOR);
cvCvtColor(pImg, pImg, CV_BGR2RGB);
cvReleaseImage(&pImg);
如果不能使用该选项,另一个选项将用于分离和重新排列通道,然后将它们与组合
在一个侧面注释中,我绝对推荐使用C++接口,因为它比内存管理更容易,并且比C接口具有更多的特性。
希望有帮助 这可能是一个涉及OpenCV本机BGR颜色空间的问题。您没有提到您正在使用哪个版本的OpenCV,但现代版本定义了要与一起使用的
CV\u BGR2RGB
。可能像这样做转换
IplImage* pImg = cvLoadImage("lines.jpg", CV_LOAD_IMAGE_COLOR);
cvCvtColor(pImg, pImg, CV_BGR2RGB);
cvReleaseImage(&pImg);
如果不能使用该选项,另一个选项将用于分离和重新排列通道,然后将它们与组合
在一个侧面注释中,我绝对推荐使用C++接口,因为它比内存管理更容易,并且比C接口具有更多的特性。 希望有帮助