opencv 使用face类训练人脸分类器

// face_recog_from_video.cpp 定义控制台应用程序的入口点。

// train_PCA_model.cpp  
//用于训练人脸识别所需的pCA模型  
//#include "stdafx.h"
#include"opencv2/opencv.hpp"
#include"opencv2/core.hpp"
#include"opencv2/imgproc.hpp"
#include"opencv2/highgui.hpp"
#include"opencv2/face.hpp"  // 包含FaceRecognizer
#include<iostream>

using namespace std;
using namespace cv;
using namespace cv::face;


static  void read_csv(const string& filename, vector<Mat>& images, vector<int>& labels, int max, int min, char separator);
int CountMax = 9, CountMin = 0;


int  main(int argc, char *argv[])
{
	string csvFile = "D:\\projects\\orl_faces\\at.txt";
	vector<Mat> images;
	vector<int> labels;


	// 读取csv文件  
	try
	{
		read_csv(csvFile, images, labels, CountMax, CountMin, ';'); //读取csvFile中所有的img和label  
	}
	catch (cv::Exception& e) // 异常检查  
	{                  // cerr:输出到标准
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
OpenCV是一个开源计算机视觉库,提供了许多图像处理和计算机视觉相关的函数和算法。其中,人脸检测是OpenCV库中最常用的功能之一。OpenCV提供了一个基于Haar特征的人脸检测分类器,可以通过训练得到。 Haar特征是一种基于图像的局部特征描述方法,可以用于检测物体。Haar特征可以用来描述图像中的区域,比如边缘、角、线和矩形等。人脸检测分类器基于Haar特征通过AdaBoost算法进行训练,最终得到一个可以检测人脸分类器。 在OpenCV中,人脸检测分类器可以通过CascadeClassifier实现。CascadeClassifier是一个封装了Haar分类器,可以简单地调用该的detectMultiScale函数实现人脸检测。detectMultiScale函数会对输入的图像进行多尺度检测,返回检测到的人脸区域的坐标。 使用OpenCV进行人脸检测的步骤如下: 1. 加载人脸检测分类器使用CascadeClassifier加载Haar分类器。可以使用OpenCV提供的已经训练好的分类器文件,也可以通过训练自己的分类器文件。 2. 读入图像:使用imread函数读入待检测的图像。 3. 调用detectMultiScale函数进行人脸检测:使用detectMultiScale函数对图像进行人脸检测,返回检测到的人脸区域的坐标。 4. 绘制人脸框:使用rectangle函数对检测到的人脸区域进行绘制。 5. 显示结果:使用imshow函数显示检测结果。 下面是一个简单的示例代码: ``` import cv2 # 加载人脸检测分类器 face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml') # 读入图像 img = cv2.imread('test.jpg') # 调用detectMultiScale函数进行人脸检测 faces = face_cascade.detectMultiScale(img, scaleFactor=1.1, minNeighbors=5) # 绘制人脸框 for (x,y,w,h) in faces: cv2.rectangle(img,(x,y),(x+w,y+h),(0,255,0),2) # 显示结果 cv2.imshow('img',img) cv2.waitKey(0) cv2.destroyAllWindows() ``` 在这个例子中,我们使用了一个已经训练好的分类器文件haarcascade_frontalface_default.xml,这个文件可以在OpenCV库中的data文件夹中找到。我们读入了一张名为test.jpg的图像,然后使用detectMultiScale函数进行人脸检测,并将检测到的人脸区域用绿色框标出。最后使用imshow函数显示结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值