私は、約3000のイメージを含むいくつかのディレクトリをイテレータにしようとしています。私は画像をロードする。イメージが読み込まれたら私はそれをリリースします。 これはエラーを再現するために書くことができる最小のプログラムです。OpenCvでたくさんのMac OSの画像を繰り返し処理する際の問題
124枚の画像を読み込んだり解除したりすると、画像の読み込みが停止します。私はこれがメモリ問題だと思うが、正確にプログラムの読み込みを停止させる原因は何か分かりません。
私はOpenCVを私のMacに使っています。どのバージョンを使用しているかを正確に把握することはできません。
ここに私のプロジェクトのコードがあります。
bool FaceDetectionStrategy::detectFace(std::string imagePath) {
IplImage *img = cvLoadImage(imagePath.c_str(), CV_LOAD_IMAGE_COLOR);
if (img) {
std::cout << "Image loaded " << imagePath << std::endl;
cvReleaseImage(&img);
} else {
std::cout << "Image not loaded " << imagePath << std::endl;
}
return true;
}
この方法は、私はを反復していdirectorys内のすべての画像のために呼ばれています。 124個の画像の後、if(img)部分はfalseと評価され、elseブランチが実行されます。後でプログラムの他の部分から画像をロードしようとすると、ロードされません。
を編集してもメモリに問題はありません。 Mac Osの標準最大オープンファイル数は512に変更された後で256です.251イメージを開くことができます。 OpenCVはイメージファイルをロードした後でクローズしないようです。
Heh、それはあまりにも悪いです:(あなたも狂っていないことを知っていますか? – GManNickG
はい、エラーが私のコードではないことが分かります:) – Janusz