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

时间:2015-05-25 02:43:24

标签: c++ 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?

的方法

2 个答案:

答案 0 :(得分:11)

CvMat *矩阵

Mat M0 = cvarrToMat(矩阵)。

opencv提供了这个函数而不是Mat(矩阵)。

注意:在opencv 3.0中,它们包含了将旧式结构(cvmat,IPLImage)转换为新式Mat的所有构造函数。

答案 1 :(得分:1)

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

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