繁体   English   中英

OpenCV Mat 到 IplImage* 转换

[英]OpenCV Mat to IplImage* conversion

我有一个指向图像的指针:

IplImage *img;

已转换为Mat

Mat mt(img);

然后, Mat被发送到 function,它获取对Mat的引用作为输入void f(Mat &m);

f(mt);

现在我想将Mat数据复制回原始图像。

你有什么建议吗?

最佳阿里

您可以在此处的文档中找到您的答案: http://opencv.willowgarage.com/documentation/cpp/c++_cheatsheet.html

编辑:

第一个代码区域的前半部分确实谈到了您已经拥有的复制构造函数。

第一个代码区域的后半部分回答了您的问题。 为清楚起见,转载如下。

//Convert to IplImage or CvMat, no data copying
IplImage ipl_img = img;
CvMat cvmat = img; // convert cv::Mat -> CvMat

对于以下情况:

double algorithm(IplImage* imgin)
{
    //blabla
    return erg;
}

我使用如下方式调用function:

cv::Mat image = cv::imread("image.bmp");
double erg = algorithm(&image.operator IplImage());

我已经做了一些测试,它看起来像 object 将管理 memory。 运算符IplImage()只会为 IplImage 构造IplImage 也许这可能有用?

您可以使用此表格:

您的代码:

plImage *img;

垫 mt(img);

f(吨);

现在将 Mat 数据复制回原始图像。

img->imageData = (char *) mt.data;

您还可以复制数据而不是指针:

memcpy(mt.data, img->imageData, (mt.rows*mt.cols));

(mt.rows*mt.cols) 是将 mt 的所有数据复制到 img 时应使用的大小。

希望我有所帮助

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM