0

下面是将cv::Mat的资源复制到IplImage中的源代码

//copy the resource of src into IplImage
void copy_mat_Ipl(cv::Mat const &src, IplImage **dst)
{
         IplImage* old = *dst;
        IplImage temp_src = src;
        *dst = cvCloneImage(&temp_src);
        cvReleaseImage(&old);
}

但我不想复制它,我想要的是从 cv::Mat 窃取资源我必须窃取它,因为 cv::Mat 可能是函数中的本地对象如果我不窃取它但是做这样的事情

void move_mat_to_Ipl(cv::Mat &src, IplImage **dst)
{
         IplImage* old = *dst;            
        **dst = src;
        cvReleaseImage(&old);
}

void some_function(IplImage **dst)
{
   cv::Mat src;
   //do something
   move_mat_to_Ipl(src, dst);
}

src 的资源将是空闲的,然后 dst 将持有一个悬空指针 我怎么能窃取 cv::Mat 的资源?

4

1 回答 1

0

你将不得不改变move_mat_to_Ipl function

IplImage ** move_mat_to_Ipl(cv::Mat &src, IplImage **dst)
{
    IplImage* old = *dst;
    IplImage temp_src = src;
    **dst = src;
    cvReleaseImage(&old);

    return **dst;
}

这将返回**dst,然后您可以将其传递给另一个函数

于 2013-04-25T06:14:19.020 回答