以下は、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 のリソースを盗むことができますか?