Я пытаюсь написать простую программу, которая считывает изображение, обнаруживает лицо на изображении и отмечает лицо прямоугольником на изображении. Я использую Visual Studio 2012 и OpenCV 2.4.9.
Я использую cv :: CascadeClassifier и haarcascade_frontalface_default.xml, которые предоставляются OpenCV. Вот мой код:
#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 и функцию рисования прямоугольника. Программа работает без ошибок.
У кого-нибудь есть идеи, что я сделал не так?
Спасибо за вашу помощь!
delete faceCascade
перед возвращением, я получаю то же сообщение об ошибке, что и раньше, только после команды удаления в конце программы. - person elHam   schedule 26.05.2016