如何在 OpenCV 3.0 中将 Mat 转换为 cvMat
How to convert Mat to cvMat in OpenCV 3.0
如何将 OpenCV Mat
对象转换为 cvMat
对象?
根据此 OpenCV 互操作性文档 (1),这种转换应该是可能的。但是在声明 cvMat
时,编译器在第 cvMat deprecatedImg
行给出了以下错误消息
: error: < expected ‘;’ before ‘deprecatedImg’ >,
如何解决这个问题?
在 OpenCV 3 及更高版本中,您必须使用兼容性 headers(types_c.h
) 才能使用已弃用的 C objects,如 cvMat
。在 OpenCV 3.0 中,CvMat
有一个接受 Mat
(1) 的构造函数。代码如下。
#include "opencv2/core/types_c.h"
cv::Mat img = ... ;
CvMat deprecatedImg(img);
在 OpenCV 2.4.* 及以下版本中,Mat
到 CvMat
转换运算符 (2) 存在,您可以简单地将 Mat
分配给 CvMat
如下。请注意,此转换运算符在 OpenCV 3 及更高版本中不再存在。
Mat img = ...;
CvMat cvMatImg = img;
如何将 OpenCV Mat
对象转换为 cvMat
对象?
根据此 OpenCV 互操作性文档 (1),这种转换应该是可能的。但是在声明 cvMat
时,编译器在第 cvMat deprecatedImg
: error: < expected ‘;’ before ‘deprecatedImg’ >,
如何解决这个问题?
在 OpenCV 3 及更高版本中,您必须使用兼容性 headers(types_c.h
) 才能使用已弃用的 C objects,如 cvMat
。在 OpenCV 3.0 中,CvMat
有一个接受 Mat
(1) 的构造函数。代码如下。
#include "opencv2/core/types_c.h"
cv::Mat img = ... ;
CvMat deprecatedImg(img);
在 OpenCV 2.4.* 及以下版本中,Mat
到 CvMat
转换运算符 (2) 存在,您可以简单地将 Mat
分配给 CvMat
如下。请注意,此转换运算符在 OpenCV 3 及更高版本中不再存在。
Mat img = ...;
CvMat cvMatImg = img;