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