基于OpenCV自带分类器识别人脸

在VS2019下要安装适用于桌面的VC++ 2015(2017) v14 00(v14)工具集。
访问网站:https://visualstudio.microsoft.com/zh-hans/downloads,下载社区版,并安装

安装完成之后进入这个界面:

安装所需要的组件

安装完成后重启vs即可

二、安装Opencv3.4.5

关于在VS下对Opencv的配置:
OpenCV下载地址:http://opencv.org/或者直接搜OpenCV下载,找到对应的版本下载,应该是个压缩包,解压,可以看到两个文件夹:

(1)添加环境变量
电脑左上角找到“我的电脑”,点击鼠标右键,依次选择“属性”、“高级系统设置”、“环境变量”、“Path”。

双击“Path”进入到“编辑环境变量”页面,通过新建或者浏览的方式将opencv的“bin文件夹路径”添加到环境变量中,看看自己的电脑是64位还是32位,如果不知道vc14还是vc15可以看下面的VS版本和OpenCV中vc的对应关系表。

注意:添加完环境变量之后最好重启一下电脑,使环境变量生效,不重启的话有可能会出现环境变量未生效这种情况。如果环境变量未生效,那么就找不到OpenCV的dll文件,会报计算机丢失xxx.dll。

(2)添加OpenCV包含目录和库目录
打开Visual Studio,新建一个C++项目,在Visual Studio左上角菜单栏,依次选择“视图”、“其他窗口”、“属性管理器”。找到自己对应的Debug和Release模式,比如说我目前想使用x64的Debug,我就选择第二项下的“Microsoft.Cpp.x64.user”。

右键选择“属性”,进入“Microsoft.Cpp.x64.user的属性页”,依次选择“通用属性”、“VC++目录”,开始添加“包含目录”、“库目录”。

选择“包含目录”,进入“包含目录”页面,添加OpenCV包含目录路径:

D:\OpenCV342\opencv\build\include
D:\OpenCV342\opencv\build\include\opencv
D:\OpenCV342\opencv\build\include\opencv2

选择“库目录”,进入“库目录”页面,添加库目录(lib文件夹)路径:
D:\OpenCV342\opencv\build\x64\vc14\lib

(3)添加附加依赖项
添加附加依赖项就是添加所有的lib文件路径,这些lib文件都是在前面那个库目录里面保存的。由于OpenCV2和OpenCV3之间的不同,相应的附加依赖项也就不同。

依次选择“链接器”、“输入”、“附加依赖项”,进入“附加依赖项”页面,开始添加lib文件路径。

到此,OpenCV就算是配置完了。

三、人脸检测

Opencv的人脸检测函数,定义了具体可跟踪对象类型的数据文件。
Haar级联分类器,通过对比分析相邻图像区域来判断给定图像或子图像与已知对象是否匹配。
两个图像的相似程度可以通过它们对应特征的欧式距离来度量。距离可能以空间坐标或颜色坐标来定义。类Haar特征是一种用于实现实时人脸跟踪的特征。每个类Haar特征都描述了相邻图像区域的对比模式。例如,边,顶点和细线都能生成具有判断性的特征。
Haar级联级具有尺度不变性,换句话说,它在尺度变化上具有鲁棒性。但是,opencv的Haar级联不具有旋转不变性。
在opencv源代码的副本中会有一个文件夹data/haarcascades,该文件夹包括了所有opencv的人脸检测的xml文件,这些文件可用于检测静止图像,视频和摄像头所得到图像中的人脸。

静态图像中的人脸检测:

import cv2 as cvfilename = 'D:/timg.jpg'face_cascade = cv.CascadeClassifier('D:/opencv/sources/data/haarcascades/haarcascade_frontalface_default.xml')
//注意用绝对路径就不会报错
img = cv.imread(filename)
gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
faces = face_cascade.detectMultiScale(gray, 1.3, 5)
for (x, y, w, h) in faces:img = cv.rectangle(img, (x, y), (x+w, y+h), (255, 0, 0), 2)cv.namedWindow('Vikings Detected')
cv.imshow('Vikings Detected', img)
cv.waitKey(0)

摄像头下的人脸检测:

import numpy as np
import cv2face_cascade = cv2.CascadeClassifier('D:/opencv/sources/data/haarcascades/haarcascade_frontalface_default.xml')
cap = cv2.VideoCapture(0)
while True:ret,img = cap.read()gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)faces = face_cascade.detectMultiScale(gray, 1.3, 5)for (x,y,w,h) in faces:cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)cv2.imshow('img',img)       if cv2.waitKey(1) &0xFF == ord('q'):break
cap.release()
cv2.destroyAllWindows()

基于OpenCV自带分类器识别人脸相关推荐

  1. 【毕业设计_课程设计】基于opencv、dilb的员工人脸识别考勤系统

    文章目录 0 项目说明 1 需求分析 2 总体设计 3 详细设计 4 效果展示 5 实验心得 6 项目源码 7 最后 0 项目说明 基于opencv.dilb的员工人脸识别考勤系统 提示:适合用于课程 ...

  2. 基于opencv tensorflow2.0开发的人脸识别锁定与解锁win10屏幕实战

    基于opencv tensorflow2.0开发的人脸识别锁定与解锁win10屏幕实战 基于opencv tensorflow2.0开发的人脸识别锁定与解锁win10屏幕 前言 运行python环境 ...

  3. java opencv bp网_基于Opencv自带BP网络的车标简易识别

    记得把这几点描述好咯:代码实现过程 + 项目文件结构截图 + 演示效果 1.准备工作 1.1 训练集和测试集准备 先将数据集手动划分成训练集和测试集,并分好类,比如第一类就放在文件夹名为0的文件夹下, ...

  4. 基于Opencv自带BP网络的车标简易识别

    代码地址如下: http://www.demodashi.com/demo/12966.html 记得把这几点描述好咯:代码实现过程 + 项目文件结构截图 + 演示效果 1.准备工作 1.1 训练集和 ...

  5. 数字识别java开源_Java基于opencv实现图像数字识别(三)—灰度化和二值化

    Java基于opencv实现图像数字识别(三)-灰度化和二值化 一.灰度化 灰度化:在RGB模型中,如果R=G=B时,则彩色表示灰度颜色,其中R=G=B的值叫灰度值:因此,灰度图像每个像素点只需一个字 ...

  6. Java基于opencv实现图像数字识别(一),java开发面试笔试题

    我总结出了很多互联网公司的面试题及答案,并整理成了文档,以及各种学习的进阶学习资料,免费分享给大家. 扫描二维码或搜索下图红色VX号,加VX好友,拉你进[程序员面试学习交流群]免费领取.也欢迎各位一起 ...

  7. java图片降噪_Java基于opencv实现图像数字识别(四)—图像降噪

    Java基于opencv实现图像数字识别(四)-图像降噪 我们每一步的工作都是基于前一步的,我们先把我们前面的几个函数封装成一个工具类,以后我们所有的函数都基于这个工具类 这个工具类呢,就一个成员变量 ...

  8. nao基于opencv的红球识别

    nao基于opencv的红球识别(python版) 由于nao的官方api的红球识别成功率不是很高,于是我在网上找了很多资料参考,对接nao的摄像机识别红球.首先有几个库是必须的,如 naoqi,op ...

  9. Java基于opencv实现图像数字识别(一)

    Java基于opencv实现图像数字识别(一) 最近分到了一个任务,要做数字识别,我分配到的任务是把数字一个个的分开:当时一脸懵逼,直接百度java如何分割图片中的数字,然后就百度到了用Buffere ...

最新文章

  1. 观察者模式C#实现实例(一)
  2. 努力的孩子运气不会太差,跌宕的人生定当更加精彩
  3. Apache 超详细编译参数解析
  4. 埃夫特机器人回零偏差太大_新松、华中数控、埃斯顿、埃夫特国内主流机器人厂商近年最新动态...
  5. gridview 实现排序 (在不是使用sqlDataSource控件,而在后台编码绑定gridview时,指定那个字段排序时使用。本例用了单层结构,可修改后应用于多层)
  6. java 一个整数的位数字_Java 输入一个整数,计算它各位上数字的和。(注意:是任意位的整数)...
  7. JAVA Pattern和Matcher 的用法
  8. RN环境搭建(Android端)
  9. 双亲委派模型【理解】
  10. 帆软决策报表JS实现点击超链切换TAB页
  11. c语言星钻图形的输出
  12. 微信修改步数(卡密版)
  13. Caught FileNotFoundError in DataLoader worker process 0.
  14. 关于结构性金属制品制造行业鼎捷的一体化解决方案
  15. Only the original thread that created a view hierarchy can touch its views. 是怎么产生的
  16. 互联网创业成功之道(三):网站支付功能配置
  17. 机器学习小组知识点31:重要性采样(Importance Sampling )
  18. 学位证书,学历证书,毕业证书有什么区别?
  19. 室内定位导航可以解决的问题
  20. 中国的亚健康人群的肠道问题不容忽视 身体知道酸奶能帮忙

热门文章

  1. k8s二进制部署 1.17.3
  2. linux系统的简单命令
  3. MISC机制编写字符驱动程序
  4. Unity3D 游戏引擎之FBX模型的载入与人物行走动画的播放(十二)
  5. 如何使excel实现汉字转拼音及获取大写拼音并保存为常用函数
  6. Jenkins Pipeline 一键部署SpringBoot项目
  7. 二维码支付的优势与劣势
  8. 你所不了解的DevOps
  9. jellyfin自定义css主题
  10. 为什么需要制定计划?