繁体   English   中英

如何在 OpenCV3.0 中将 CvMat* 转换为 cv::Mat

[英]How to convert CvMat* to cv::Mat in OpenCV3.0

在我之前使用的 opencv2.4.10 中,从 CvMat* 到 cv::Mat 的转换可以如下完成。

CvMat *src = ...;
cv::Mat dst;
dst = cv::Mat(src);

但是,在 opencv3.0 rc1 中不能这样转换。 在某些网站中,可以按如下方式进行此转换。

CvMat* src = ...;
cv::Mat dst;
dst = cv::Mat(src->rows, src->cols, src->type, src->data.*);

如果src的类型是'float',最后一个参数是'src->data.fl'。

为什么 cv::Mat 的构造函数减少了? 或者是否有一些关于从 CvMat* 转换为 cv::Mat 的方法?

CvMat* matrix;
Mat M0 = cvarrToMat(matrix);

OpenCV 提供了这个函数而不是 Mat(matrix)。

注意:在 OpenCV 3.0 中,他们将所有将旧式结构(cvmat、IPLImage)转换为新式 Mat 的构造函数封装到此函数中。

为了将CvMat*转换为Mat您必须这样做:

cv::Mat dst(src->rows, src->cols, CV_64FC1, src->data.fl);

暂无
暂无

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

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