我已经花了很多时间搜索如何从cv :: Mat或CvMat转换为CvArr但没有任何收获,请帮助我,谢谢。
答案 0 :(得分:4)
Mat img = imread("C:\MyPic.jpg",CV_LOAD_IMAGE_GRAYSCALE);
IplImage tmp=img;
cvErode(&tmp, &tmp, 0, 2);
Mat laser=&tmp;
imshow("Eroded",laser);
我通过这种方式将cv::Mat
转换为CvArr
。而不是直接使用tmp
使用&tmp
。
答案 1 :(得分:3)
当我需要这样做时,我只使用:
IplImage tmp = image;
使用图像Mat变量。
答案 2 :(得分:1)
如果我没记错的话,CvMat是一个CvArr,所以你可以把它转换成CvArr,现在CvArr的第一个字节告诉函数它实际上是一个CvMat: http://opencv.willowgarage.com/documentation/basic_structures.html#cvarr
答案 3 :(得分:1)
您确定要转换吗?有时会有相同的功能使用你拥有的东西。例如,cvMorphologyEx
正在使用CvArr
但morphologyEx
正在使用cv::Mat
。
答案 4 :(得分:0)
首先使用以下内容转换图像:
IplImage* oldstyleimg = &matimg.operator IplImage()
我不记得它是只为图像创建标题还是制作副本