// cascade.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include#include #include using namespace cv; using namespace std; void creatTable(vector &table, int alpha, int beta) { for (int i = 0; i < 255; i++) { table.push_back(alpha * i + beta); if (table[i] > 255) { table[i] = 255; } if(table[i] < 0) { table[i] = 0; } } } void BrightnessAdjustment(Mat& src, Mat& dst, vector table) { for (int i = 0; i < src.rows; i++) { uchar* data1 = src.ptr (i); uchar* data2 = dst.ptr (i); for (int j = 0; j < src.cols; j++) { data2[j] = table[data1[j]]; } } } int main(int argc, char** argv) { String fileName = "D:\temp\cascade\model\haarcascade_frontalface_alt.xml";//设置文件路径 CascadeClassifier face_classifier;//创建分类器 if (!face_classifier.load(fileName)) {//加载分类数据 printf("could not load face feature data...n"); return -1; } //string imagePath = "D:\temp\cascade\test"; string imagePath = "D:\temp\cascade\image\train"; vector vecImage; glob(imagePath, vecImage); for (int i = 0; i < vecImage.size(); i++) { Mat src = imread(vecImage[i]); if (src.empty()) { printf("could not load image...n"); return -1; } //imshow("input image", src); Mat gray; cvtColor(src, gray, COLOR_BGR2GRAY);//转成灰度图 equalizeHist(gray, gray);//直方图均衡化,提高对比度 vector table; creatTable(table, 1.5, 10); BrightnessAdjustment(gray, gray, table); imshow("input image", gray); waitKey(0); vector faces; face_classifier.detectMultiScale(gray, faces, 1.2, 3, 0, Size(24, 24));//在多尺度上检测 for (size_t t = 0; t < faces.size(); t++) { rectangle(src, faces[static_cast (t)], Scalar(0, 0, 255), 2, 8, 0); } imshow("detect faces", src); waitKey(0); } return 0; }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)