如何从 cv::Mat 转换为 CvArr

how to convert from cv::Mat to CvArr?

本文关键字:转换 CvArr Mat cv      更新时间:2023-10-16

我已经花了很多时间搜索如何从cv::Mat或CvMat转换为CvArr,但没有收获,请帮助我,谢谢。

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

当我需要这样做时,我只使用:

IplImage tmp = image;

使用图像一个垫子变量。

如果我

没记错的话,CvMat 是一个 CvArr,所以你可以把它转换为 CvArr,现在 CvArr 的第一个字节告诉函数它实际上是一个 CvMat:http://opencv.willowgarage.com/documentation/basic_structures.html#cvarr

您确定要转换它吗? 有时有等效的函数使用您拥有的功能。例如,cvMorphologyEx正在使用CvArrmorphologyEx正在使用cv::Mat

首先使用以下方法转换图像:

IplImage* oldstyleimg = &matimg.operator IplImage()

我不记得它是否只为图像创建标题或制作副本