基于的OPENCV人脸检测与识别(C++)

本文记录了使用OpenCV进行人脸检测与识别的过程,包括加载检测人脸、保存面部数据、训练程序和实际识别。通过修改参考博客的代码,在VS2015和OpenCV2.4.13环境下实现,同时增加了眼睛识别功能。识别所需面部数据可自建或从官方数据库获取,并确保尺寸一致。训练和检测代码随后介绍。由于显示中文字符库编译繁琐,故未实现。

        这两天试了下OPENCV的人脸识别库,按照别人的代码重新做了一遍。遇到了下小问题,好在最后都调试成功了。下面做下汇总。

        基本思路分为以下几步:1)加载并检测人脸;2)保存检测到的面部数据入库;3)采用面部数据库“训练”程序;4)进行人脸识别。

        根据以上思路,以下是参考博客“基于OPENCV的人脸检测及识别”(https://www.cnblogs.com/yyagrt/p/7260586.html)中的部分代码进行修改,完成的识别人脸并保存的代码。编译环境为VS2015,集成OPENCV2.4.13。其中增加了眼睛的识别代码,可以去掉。

#include "stdafx.h"
#include <iostream>
#include <string>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/gpu/gpu.hpp>

using namespace cv;
using namespace std;

string face_cascade = "C:\\opencv\\works\\face_reco\\haarcascades\\haarcascade_frontalface_default.xml";//这里一定要预先将opencv安装目录下,opencv\sources\data\haarcascades中的所有xml文件拷贝到定义目录中
string eye_cascade = "C:\\opencv\\works\\face_reco\\haarcascades\\haarcascade_eye.xml";
//face_cascade 字符串记录那个.xml文件的路径

int main(int argc, char**argv)
{
	Mat frame, gray, roi, image1;
	CascadeClassifier ccf, cce;      //创建脸部对象
	ccf.load(face_cascade);          //导入opencv自带检测的文件
	CascadeClassifier a;             //创建脸部对象
	cce.load(eye_cascade);
	CascadeClassifier b;

	if (!a.load(face_cascade))     //如果读取文件不出错,则检测人脸
	{
		cout << "无法加载xml文件" << endl;
		return 0;
	}
	if (!b.load(eye_cascade))     //如果读取文件不出错,则检测眼睛
	{
		
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值