osg与OpenCV图像互转

因研究需要,这几天想把Opecv获取的视频帧转到OSG中作为纹理背景输出,关键的一步就是Opencv帧图像的传递。

那么问题来了:Opencv存放图像数据的格式和OSG的差异大吗?

因为自己也是个新手,首先找到了

osg抓帧放到openCV里

?url=PXeAHmmV7vyA7s2fEK30_gEQvJzpHA9uDl9y1YIUHstCXCj_HKOTGjs_5PMnesuFDocCapTlBOyp5UjzWDu0LE7VayoDq98X3jzpPpyiQCm

原作者无从可考,但是留下了一句重要的代码:

memcpy((unsigned char*)pIplImg->imageData,pCImg->data(),pCImg->getImageSizeInBytes());

给出的信息就是两者数据转换,只要知道长和宽,以及像素数据的指针位置就可以了。完整的代码如下:

}

顺藤摸瓜,再重申下我的目的是Opencv的图转成OSG的,因为配置了Opencv2.0,,所以使用了最新的图像格式Mat(同时包括了老版本的IplImage和cvMat)

于是任务变成:Opencv Mat->OSG::Image

去Image看构造函数,只有setImage中要求设定长款和char* data,数据格式相符。OSG源码:

/** Set the image dimensions, format and data. */virtual void setImage(int s,int t,int r,GLint internalTextureformat,GLenum pixelFormat,GLenum type,unsigned char* data,AllocationMode mode,int packing=1, int rowLength=0);之后试了一下居然成了。我的代码:

}

调试输出的图片和文字信息全部正确。

之后就是重新加工视频流了,用osg纹理贴图即可。

版权声明:本文为博主原创文章,未经博主允许不得转载。

是不是因为心痛的麻木了,我才笑得最美丽。

osg与OpenCV图像互转

相关文章:

你感兴趣的文章:

标签云: