概述
// cascade.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <opencv2/opencv.hpp>
#include <iostream>
#include <string>
using namespace cv;
using namespace std;
void creatTable(vector<int> &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<int> table)
{
for (int i = 0; i < src.rows; i++)
{
uchar* data1 = src.ptr<uchar>(i);
uchar* data2 = dst.ptr<uchar>(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\1";
vector<String> 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<int> table;
creatTable(table, 1.5, 10);
BrightnessAdjustment(gray, gray, table);
imshow("input image", gray);
waitKey(0);
vector<Rect> 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<int>(t)], Scalar(0, 0, 255), 2, 8, 0);
}
imshow("detect faces", src);
waitKey(0);
}
return 0;
}
最后
以上就是哭泣小刺猬为你收集整理的opencv 调节图像对比度及亮度的人脸识别的全部内容,希望文章能够帮你解决opencv 调节图像对比度及亮度的人脸识别所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复