下面是将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的资源?
答案 0 :(得分: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;
}
这将return ** dst,然后你就可以将它传递给另一个函数