[英]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.