0

システム プログラミング コースの宿題を出しました。私がopencvを使用するまで(まだ初心者でした)、すべてがメモリリークなしでうまくいきました。

基本的に、学生クラスとコース クラスがあり、正しいタイプの学生 (コンピューター サイエンスの学生、PG の学生など) を正しいコース (選択科目および PG/CS コース) に割り当てる必要があります。

やるべきことはすべてやったので、最後のステップは、カラーで卒業した人の画像とグレースケールで卒業しなかった人の画像を表示することです。全部やった。

画像を開き、画像をファイルに保存し、新しい画像を初期化し、RGB への変換やグレースケールへの変換などのすべての機能を処理する imagehandler クラスを作成しました。

このイメージハンドラー クラスには、次のようなイメージのフィールドがあります。

cv::Mat m_image;

ここで、学生クラス内で、各学生が imagehandler オブジェクトを持つようにし、そのオブジェクトに自分のイメージを保存します。

imagehandler クラスでデストラクタも作成しました。

imagehandler::~imagehandler(){
   m_image.release();
}

opencv のステップを開始する前 (opencv をインストールして、コードに必要なものを埋め込む前) には、メモリ リークはまったくありませんでした。opencv ステップをプログラムした (そしてすべてが機能した) 後、重大なリークが発生しました。

valgrind のログファイルは次のとおりです (大きすぎてここに表示されないため、ペースト ビンに入れなければなりませんでした): valgrind.log

エラーは主に、画像の読み取り、画像の保存、画像のサイズ変更、RGBまたはグレースケールへの変換...すべてのopencv関連のリークです。

4

1 に答える 1

0

以前にこの問題に遭遇したことがあり、OpenCV のバージョンを変更することで解決しました。現在は opencv-2.4.13 を使用していますが、メモリ リークの問題はありません。問題のバージョンは opencv-3.0.00 です。

于 2016-08-12T13:56:48.470 に答える