0

これがばかげた質問のように思えるかもしれませんが、申し訳ありません... OpenCVの cvLoadImage について疑問があります:

IplImage *frame;
for (unsigned int i = 0; i < LENGTH; i++)
{
    frame = cvLoadImage(filename.c_str());  
    // do something...
}

の呼び出しごとにcvLoadImage、新しいものIplImageがメモリに保存されますか? が指す古い変数はframe、オーバーライド後にヒープから解放されますか?

さらに、次のように画像をリリースしようとすると...

IplImage *frame;
for (unsigned int i = 0; i < LENGTH; i++)
{
    if (frame != NULL)
        cvReleaseImage(&frame);

    frame = cvLoadImage(filename.c_str());  
    // do something...
}

この解決策が機能しないのはなぜですか (メモリアクセスが悪い)? よろしく、ヴィ。

4

1 に答える 1

2

はい、cvLoadImage によって割り当てられたメモリです。最初にフレームを初期化していないため、エラーが表示されます。ゼロまたは NULL で初期化する必要があります。

于 2013-08-01T17:58:13.743 に答える