2016-05-25 14 views
1

画像を読み込んで画像を検出し、その画像に矩形でマークします。 私はVisual Studio 2012とOpenCV 2.4.9を使用します。OpenCV CascadeClassifierを使用した顔検出:.exeがブレークポイントをトリガーしました

OpenCVが提供するcv :: CascadeClassifierとhaarcascade_frontalface_default.xmlを使用します。私のコードです:

#include <opencv2/imgproc/imgproc.hpp> // Gaussian Blur 
#include <opencv2/core/core.hpp>  // Basic OpenCV structures (cv::Mat, Scalar) 
#include <opencv2/highgui/highgui.hpp> // OpenCV window I/O 
#include <opencv2/features2d/features2d.hpp> 
#include <opencv2/objdetect/objdetect.hpp> 

#include <stdio.h> 
#include <string> 
#include <vector> 
#include <iostream> 

using namespace std; 
using namespace cv; 

int main(int argc, char** argv) 
{ 

    //load image, in this case it's allready gray 
    Mat img = imread("H:/BioID/BioID-FaceDatabase-V1.2/BioID_0000.pgm"); 

    Mat grayImg; 
    cvtColor(img, grayImg, CV_BGR2GRAY); 

    //create vector of rectangles that will represent the faces 
    vector<Rect> faces; 

    CascadeClassifier* faseCascade = new CascadeClassifier("C:\\opencv\\sources\\data\\haarcascades\\haarcascade_frontalface_default.xml"); 

    faseCascade->detectMultiScale(grayImg, faces); 

    //draw rectangle on img; param: image, rectangle, color 
    cv::rectangle(img, faces[0],Scalar(255,0,0),2); 

    //display image 
    imshow("image", img); 

    waitKey(0);  

    return 0; 
} 

プログラムは正常に実行され、最終的に顔の周りに青い矩形の画像が表示されます。しかし、私がキーを押してプログラムが閉じようとすると、それは壊れます。

出力を示しています。

HEAP[myProgram.exe]: Invalid address specified to RtlValidateHeap(00000004F9F30000, 00000004FC23ECE0) 
myProgram.exe has triggered a breakpoint. 

私はdetectMultiscale機能とドロー矩形関数をコメントアウトした場合。プログラムはエラーなく実行されます。

誰かがアイデアを持っていますか?

ありがとうございました!

+0

戻す前にdeallocate faseCascadeを追加できますか? – saurabheights

+0

OpenCVの古いバージョンを使用する特別な理由はありますか?デバッグモードまたはリリースモード?どのライブラリにリンクしましたか? –

+0

@saurabheights返す前に 'delete faceCascade'を実行すると、前と同じError Msgが返されます。プログラムの最後ではなく、deleteコマンドでのみ取得されます。 – elHam

答えて

1

問題は、環境変数のopencv binフォルダへのパスが間違っていたことです。 私は最近、Visual Studio 2010の使用を中止し、VS2012の使用を開始し、パスの変更を忘れてしまいました。
C:\ opencv \ build \ x64 \ vc10 \ binから変更する必要がありました。

C:\ opencv \ build \ x64 \ vc11 \ bin;
を入力し、コンピュータを再起動します。

今はすべて正常に動作しているようです。

関連する問題