Skip to content

Instantly share code, notes, and snippets.

@wyfSunflower
Forked from yoggy/CascadeClassifier.cpp
Created July 16, 2017 08:58
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 3 You must be signed in to fork a gist
  • Save wyfSunflower/ffcbafcd2e59fdc04834e690b6e16376 to your computer and use it in GitHub Desktop.
Save wyfSunflower/ffcbafcd2e59fdc04834e690b6e16376 to your computer and use it in GitHub Desktop.
OpenCV CascadeClassifier sample
#include <SDKDDKVer.h>
#include <Windows.h>
#include <vector>
#pragma warning(disable:4819)
#pragma warning(disable:4996)
// for OpenCV2
#include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/objdetect/objdetect.hpp"
#include "opencv2/highgui/highgui.hpp"
#ifdef _DEBUG
#pragma comment(lib, "opencv_core231d.lib")
#pragma comment(lib, "opencv_imgproc231d.lib")
#pragma comment(lib, "opencv_objdetect231d.lib")
#pragma comment(lib, "opencv_highgui231d.lib")
#else
#pragma comment(lib, "opencv_core231.lib")
#pragma comment(lib, "opencv_imgproc231.lib")
#pragma comment(lib, "opencv_objdetect231.lib")
#pragma comment(lib, "opencv_highgui231.lib")
#endif
int main(int argc, char* argv[])
{
cv::Mat src_img, gray_img, eq_img, result_img;
src_img = cv::imread("C:\\opencv-2.3.1\\samples\\c\\lena.jpg", CV_LOAD_IMAGE_COLOR);
if (src_img.data == NULL) {
printf("cv::imread() failed...\n");
return -1;
}
cv::cvtColor(src_img, gray_img, CV_RGB2GRAY);
cv::equalizeHist(gray_img, eq_img);
result_img = src_img.clone();
cv::CascadeClassifier cascade;
if (cascade.load("C:\\opencv-2.3.1\\data\\haarcascades\\haarcascade_eye.xml") == false) {
printf("cascade.load() failed...\n");
return -1;
}
std::vector<cv::Rect> faces;
cascade.detectMultiScale(
eq_img,
faces,
1.1, // scale factor
3, // minimum neighbors
0, // flags
cv::Size(20, 20) // minimum size
);
std::vector<cv::Rect>::const_iterator i;
for (i = faces.begin(); i != faces.end(); ++i) {
cv::rectangle(
result_img,
cv::Point(i->x, i->y),
cv::Point(i->x + i->width, i->y + i->height),
CV_RGB(255, 0, 0),
2);
}
while(true) {
cv::imshow("result_img", result_img);
int c = cv::waitKey(0);
if (c == 27) break;
}
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment