0

有没有可以对这两个函数做同样操作的c++ opencv接口?

嗨,我实际上是这样使用这两个功能的

IplImage *image;
ARUint8 *dataPtr; // unsigned chars, in format ARGB
cv::Size size;

//do stuff

image = cvCreateImage(*size, IPL_DEPTH_8U, channels );

cvSetImageData( image, dataPtr, size->width * channels );

最适合创建的一个用于初始化一个空的 IplImage *image,第二个用于将原始数据从外部源 (dataPtr) 复制到图像本身。

我知道第一个应该是微不足道的,替换IplImage con un cv::Mat,问题是我不知道如何将参数“IPL_DEPTH_8U”传递给构造函数。

要使用 c++ 接口复制数据,我不知道...

PS:ARUint8 *dataPtr 是我的数据源,我不能有其他源,但是我需要将它转换为opencv数据表示

提前致谢!

4

1 回答 1

1

就像您怀疑的那样,在 C++ 接口中,您可以通过cv::Mat. 您将必须使用对应的适当类型IPL_DEPTH_8U(可能CV_8UCV_8UC3取决于您拥有的频道数量)。

构造函数重载之一可以采用指向现有数据的原始指针,因此您可以这样做:

cv::Mat image(size, CV_8U, (void*)dataPtr);

另请注意, cv::Mat 构造函数可以接受一个step参数,如果您的数据在行尾有填充,或者任何其他更复杂的格式,则需要该参数。

您还可以随时在线浏览 Mat::Mat 的 OpenCV 文档以获取更多详细信息。

于 2013-02-11T14:09:22.053 回答