私は、カメラから単一の画像を取得し、それらにいくつかの処理を行うと、使用したメモリを解放しようとしています。セグメンテーションフォールト()()
char* img_data = new char[ len ]; // I retrieve len from the camera.
// Grab the actual image from the camera:
// It fills the previous buffer with the image data.
// It gives width and height.
CvSize size;
size.width = width;
size.height = height;
IplImage* img = cvCreateImageHeader(size, 8, 1);
img->imageData = img_data;
// Do the processing
cvReleaseImage(&img);
をこのコードは正常に動作:私は、次のものに類似したコードでかなりの時間のためにそれをやってきました。私最近、私はIMG-に直接データを割り当てるべきではないことを(画像データの説明で)hereを読んだ>画像データが、(SetDataメソッドを使用)の代わりに、そのような:
cvSetData(img, img_data, width);
しかし、私はこのようにそれを行います私は、cvReleaseImage()コールでセグメンテーション違反を取得します。
私は間違っていますか?
ありがとうございます。
EDIT:は私が提案し@karlphillipプログラムをコンパイルして実行しようとしていると私はcvSetDataを使用してセグメンテーションフォールトを得るのですが、直接データを割り当てるときに、それが正常に動作。 私はDebian 6とOpenCV 2.3.1を使用しています。
ニース!これで問題は解決しましたが、Mac OS XではなくGNU/LinuxではcvReleaseImageがうまくいかず、OpenCVメーリングリストで電子メールを送信しましたが、受け入れられません(外部のウェブサイトへのリンクを投稿できないか何か)。とにかく、ありがとう! – pparescasellas
ありがとう、私はopencvに慣れていない。 – spmno
ええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええ、 –