0

IplImage を cv::Mat に変換したかったのですが、元のバッファを削除しようとしたときの小さな segfault を除いてすべて動作し、copy フラグを true に設定したと思いました ...

私は何か間違ったことをしていると確信していますが、わかりません...

これが私がすることです:

IplImage* cvImage =  cvCreateImage( cvSize(width, height), IPL_DEPTH_8U, 3) ;

{... fill cvImage data by mcopy from a blob ...}

cv::Mat mat = cv::cvarrToMat(cvImage, true) ;

if (cvImage)
  delete (cvImage) ;

たぶん私はコピーのことを誤解していて、オブジェクト全体ではなく、tge cvImage->data だけを削除できますか?

ありがとう :)

4

1 に答える 1

2

opencv で を作成した場合、IplImage*cvCreateImage解放しないでくださいdelete。試す:

cvReleaseImage( &cvImage );

IplImage* は C-api からのものであるため、提案どおりに解放する必要があります。あなたはしなければなりません&cvImage。ドキュメントからそれを見ることができます:http://docs.opencv.org/modules/core/doc/old_basic_structures.html?highlight=cvreleaseimage#releaseimage

于 2013-07-29T15:12:20.203 に答える