在我之前使用的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?
的方法答案 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);