gpt4 book ai didi

c++ - cvSetImageData 和 cvCreateImage c++ 等效接口(interface)

转载 作者:行者123 更新时间:2023-11-28 07:46:19 24 4
gpt4 key购买 nike

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

你好,我其实就是这样使用这两个函数的

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++接口(interface)复制数据,我一点头绪都没有...

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

提前致谢!

最佳答案

正如您所怀疑的,在 C++ 接口(interface)中,您通过 cv::Mat 的构造函数来执行此操作。您必须使用与 IPL_DEPTH_8U 相对应的适当类型(可能是 CV_8UCV_8UC3,具体取决于您拥有的 channel 数量)。

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

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

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

您也可以随时浏览 OpenCV documentation for Mat::Mat online了解更多详情。

关于c++ - cvSetImageData 和 cvCreateImage c++ 等效接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14810838/

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