【问题标题】:How to convert CvMat* to cv::Mat in OpenCV3.0如何在 OpenCV3.0 中将 CvMat* 转换为 cv::Mat
【发布时间】:2019-11-30 05:33:17
【问题描述】:

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

【问题讨论】:

    标签: c++ opencv3.0


    【解决方案1】:
    CvMat* matrix;
    Mat M0 = cvarrToMat(matrix);
    

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

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

    【讨论】:

    • 这个注释很有帮助,我刚刚编辑它以使其更加突出。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-05-28
      • 1970-01-01
      • 2022-06-25
      • 2012-10-22
      • 2018-07-17
      • 1970-01-01
      • 2016-08-16
      • 2018-04-16
      相关资源
      最近更新 更多