opencv 人脸识别

原创 2016年08月31日 11:02:53

话不多说,直接推荐干货  Robust Real-time Object Detection. Paul Viola, Michael Jones. IJCV 2004.

人脸识别必读N篇文章有时间可以多读读论文。

opencv里面有直接训练好的分类器,直接调用接口很容易实现人脸识别。opencv官方人脸识别范例

我对此代码简单修改了一下,如下:

#include "opencv2/objdetect/objdetect.hpp"
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"

#include <iostream>
#include <stdio.h>

using namespace std;
using namespace cv;

/** Function Headers */
void detectAndDisplay(Mat frame);

/** Global variables */
string pic_name = "test1.jpg";
String face_cascade_name = "haarcascade_frontalface_alt.xml";
String eyes_cascade_name = "haarcascade_eye_tree_eyeglasses.xml";
CascadeClassifier face_cascade;
CascadeClassifier eyes_cascade;
string window_name = "Capture - Face detection";
RNG rng(12345);

/** @function main */
int main(int argc, const char** argv)
{
	Mat frame;

	//-- 1. Load the cascades
	if (!face_cascade.load(face_cascade_name)){ printf("--(!)Error loading\n"); return -1; };
	if (!eyes_cascade.load(eyes_cascade_name)){ printf("--(!)Error loading\n"); return -1; };

	frame = imread(pic_name);
	if (!frame.empty())
		detectAndDisplay(frame);
	else
		cout << "frame is empty" << endl;
	waitKey(0);
	return 0;
}

/** @function detectAndDisplay */
void detectAndDisplay(Mat frame)
{
	std::vector<Rect> faces;
	Mat frame_gray;

	cvtColor(frame, frame_gray, CV_RGB2GRAY);
	equalizeHist(frame_gray, frame_gray);

	//-- Detect faces
	face_cascade.detectMultiScale(frame_gray, faces, 1.1, 2, 0 | CV_HAAR_SCALE_IMAGE, Size(25, 25));

	for (size_t i = 0; i < faces.size(); i++)
	{
		Point center(faces[i].x + faces[i].width*0.5, faces[i].y + faces[i].height*0.5);
		ellipse(frame, center, Size(faces[i].width*0.5, faces[i].height*0.5), 0, 0, 360, Scalar(255, 0, 255), 4, 8, 0);

		Mat faceROI = frame_gray(faces[i]);
		std::vector<Rect> eyes;

		//-- In each face, detect eyes
		eyes_cascade.detectMultiScale(faceROI, eyes, 1.1, 2, 0 | CV_HAAR_SCALE_IMAGE, Size(25, 25));

		for (size_t j = 0; j < eyes.size(); j++)
		{
			Point center(faces[i].x + eyes[j].x + eyes[j].width*0.5, faces[i].y + eyes[j].y + eyes[j].height*0.5);
			int radius = cvRound((eyes[j].width + eyes[j].height)*0.25);
			circle(frame, center, radius, Scalar(255, 0, 0), 4, 8, 0);
		}
	}
	imwrite("output.jpeg", frame);
	imshow(window_name, frame);
}

结果如下:



玩转OpenCV之一:关于OpenCV学习版本的选择

作为机器视觉领域的开发人员,你一定听说过OpenCV,它作为一款强大的开源计算机视觉处理库,得到了广泛的发展,目前它的最新版本已经到了3.1版本,为了学习OpenCV,首先要选择一个合适的版本,版本太...
  • hanfei410
  • hanfei410
  • 2016年01月14日 21:28
  • 4555

Opencv贴图的两种方式

白底不贴,遍历像素时,若为白色,则忽略,否则将像素值复制到背景上 因为目标图片中可能含有白色点,并且对抠出的图片要求挺高的不然就会出现第二幅图的效果,所以这种方式局限性较大。void Drawtob...
  • u013298384
  • u013298384
  • 2015年09月05日 18:32
  • 1238

opencv的鼠标以及键值使用

简介   本章是学习opencv上键盘和鼠标相应的操纵与实例。 键盘响应 #include ...
  • u011630458
  • u011630458
  • 2015年03月05日 13:47
  • 3357

OpenCV(C++ 与 Python 的比较)与 MATLAB 的比较

原文作者 : Satya Mallick译者 : aleen42 原文  https://aleen42.gitbooks.io/personalwiki/content/transla...
  • lhbbzh
  • lhbbzh
  • 2016年07月27日 21:11
  • 3902

opencv 读取视频、打开摄像头、写入视频文件

1、打开摄像头,采集图片,并保存到视频 主要用到两个类  VideoCapture  打开摄像头 VideoWriter   保存为视频文件 #include #include usi...
  • hust_bochu_xuchao
  • hust_bochu_xuchao
  • 2016年08月16日 15:47
  • 17528

【OpenCV】Mac OS X平台使用Xcode搭建OpenCV环境

本文介绍的是如何在Mac系统下搭建OpenCV环境。 软件需求:Mac OS(我的是10.11.6)、Xcode(我的是8.1)、OpenCV(不建议去官网先下载,具体的后续会说明)。 1、安装Hom...
  • hero_myself
  • hero_myself
  • 2017年02月14日 21:00
  • 944

OpenCV 学习(图像的基本运算)

OpenCV 学习(图像的基本运算)图像的基本运算有很多种,比如两幅图像可以相加、相减、甚至可以相乘、相除。图像可以放大、缩小、旋转,还可以截取中间的一副子图,各个颜色通道还可以分别提取。总之,对于图...
  • liyuanbhu
  • liyuanbhu
  • 2015年10月05日 20:53
  • 14398

Opencv图像识别从零到精通(7)----图像平移、旋转、镜像

根据vc6.0c++的学习经验,如果可以很好的自己编程,让图像进行平移旋转这些操作,那么就好像能够清楚的看见图像的内部结构,当然这里你怎么访问像素,这个可以自己选一种适合的,最多的是ptr指针,at也...
  • qq_20823641
  • qq_20823641
  • 2016年07月16日 16:49
  • 9420

opencv基本绘图函数--点,线,矩形,圆等

opencv提供的一些绘图函数,来简单的绘制一个简易的图形,包括线段、矩形、椭圆、多边形等。 1.线段 opencv提供了line()函数来对直线的绘制。其原型如下: CV_EXPORTS_W vo...
  • piaoxuezhong
  • piaoxuezhong
  • 2017年01月13日 21:28
  • 3471

OpenCV书籍:OpenCV官方推荐的多部书籍

Books Published books about OpenCV library: Instant OpenCV for iOS Instant OpenCV for iOS is a p...
  • u012211748
  • u012211748
  • 2013年10月18日 10:53
  • 6350
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:opencv 人脸识别
举报原因:
原因补充:

(最多只允许输入30个字)