2013-04-24 57 views
0
下面

是複製品種的資源::墊的源代碼到的IplImage偷CV ::墊的資源的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 ::墊可能是一個局部對象在函數 如果我不偷,但這樣做

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

你將不得不改變move_mat_to_Ipl功能

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,然後你可以將其傳遞到其他功能