gpt4 book ai didi

opencv - 将 IplImage 转换为 osg::Image

转载 作者:太空宇宙 更新时间:2023-11-03 23:03:10 26 4
gpt4 key购买 nike

如何正确地将 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,cvImg->height, 3,
GL_RGB, GL_RGB, GL_UNSIGNED_BYTE,
(BYTE*)(cvImg->imageData),
osg::Image::AllocationMode::NO_DELETE,1);

最佳答案

这可能是一个涉及 OpenCV 的原生 BGR 色彩空间的问题。您没有提及您使用的是哪个版本的 OpenCV,但现代版本定义了 CV_BGR2RGB 用于 cvCvtColor .可能像这样进行转换

IplImage* pImg = cvLoadImage("lines.jpg", CV_LOAD_IMAGE_COLOR);
cvCvtColor(pImg, pImg, CV_BGR2RGB);
cvReleaseImage(&pImg);

如果你不能使用那个,另一个选项是使用 cvSplit分离和重新排序 channel ,然后将它们与 cvMerge 组合.

附带说明一下,我肯定会推荐使用 C++ 接口(interface),因为它更容易进行内存管理,并且比 C 接口(interface)具有更多的功能。

希望对您有所帮助!

关于opencv - 将 IplImage 转换为 osg::Image,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10876706/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com