#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/video/background_segm.hpp>
#include "opencv2/calib3d/calib3d.hpp"
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;
RNG rng;
int main(int argc, char** argv) {
cv::Mat temp_thin_color = cv::imread("../example/93.jpg", CV_LOAD_IMAGE_UNCHANGED);
cv::Mat temp_thin_image_color, gray_image_color, equalize_image_color;
temp_thin_color.convertTo(temp_thin_image_color, CV_8UC1, 1, 0);
cv::cvtColor(temp_thin_image_color, gray_image_color, CV_RGB2GRAY);
cv::imshow("gray_image_color", gray_image_color);
cv::equalizeHist(gray_image_color, equalize_image_color);
cv::imshow("equalize_image_color", equalize_image_color);
std::vector<cv::Rect> objs;
cv::CascadeClassifier objDetector("../haarcascades/haarcascade_frontalface_alt2.xml");
objDetector.detectMultiScale(equalize_image_color, objs, 1.2, 2, CV_HAAR_SCALE_IMAGE, cv::Size(30, 30));
std::vector<cv::Rect>::const_iterator it = objs.begin();
for (; it != objs.end(); ++it) {
rectangle(gray_image_color, cv::Point(it->x, it->y),cv::Point(it->x + it->width, it->y + it->height),cv::Scalar(0, 255, 0), 2, CV_AA);
std::cout << it->x << " " << it->y << " " << it->width << " " << it->height << std::endl;
cv::Mat roi_image_color = temp_thin_image_color(cv::Rect(it->x, it->y, it->width, it->height));
cv::imshow("roi_image_color", roi_image_color);
}
cv::waitKey(0);
return 0;
}
终极那结果:
识别结果:108 177 335 335