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