opencv人脸识别

在python环境下利用opencv实现人脸识别,接下来一步一步动手操作。

预备知识

1,人脸识别,其实就是对脸部特征可以使用矩阵来描述,通过灰度图片部分特征的值的变化来确定,如:眼睛的区域大小、颜色、颜色的深浅等。

2,为啥要用opencv?opencv其实只是一个算法库,它提供了读取图片,灰度转换,显示图像,简单的编辑图像等等(android自带了一个阉割版的opencv,可以用来做人脸识别、或者类似抖音那种视频效果))。噢。其实这只是它的九牛一毛,他还有很多其他的功能,这里我们只是做个了解,以后还是会研究下这个库。

一、环境准备

如果已经准备好了请跳过。

IDE:pycharm 编辑python比较方便

如果是Anaconda,请另百度。

下载安装python3.6(我测试的是这个版本,其他版本后续可以试试,但是这个版本还是很稳定的,推荐);

下载安装python环境的opencv:

0,第一步安装numpy和Matplotlib

pip install --upgrade setuptools
pip install numpy Matplotlib

1,pip安装,需要网络较好

pip install opencv-python

2,下载安装包本地安装,使用网络不好的。先在https://www.lfd.uci.edu/~gohlke/pythonlibs/下载contrib版本,

opencv_python‑3.3.0+contrib‑cp36‑cp36m‑win_amd64.whl

pip install 安装包路径(如:d:\python\opencv_python‑3.3.0+contrib‑cp36‑cp36m‑win_amd64.whl)

3,测试

import cv2 #导入cv2模块就是opencv

#读取图像,支持 bmp、jpg、png、tiff 等常用格式
imgurl = 'bb.jpg'#本地图片路径

img = cv2.imread(imgurl) #注意这里的路径

#创建窗口并显示图像
cv2.namedWindow("Image",0)
cv2.resizeWindow("Image", 320,320);
cv2.imshow("Image",img) #显示图片
cv2.waitKey(0)
#释放窗口
cv2.destroyAllWindows()

OK,搞定!

二、代码,直接看代码,有注释

import cv2 #导入cv2模块就是opencv

#读取图像,支持 bmp、jpg、png、tiff 等常用格式
imgurl = 'bb.jpg'#本地图片路径
# imgurl = '5903040bf4146.jpg'

img = cv2.imread(imgurl) #注意这里的路径
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) #转化灰度图片,用于提取脸部特征值

face_cascade = cv2.CascadeClassifier(r'./haarcascade_frontalface_default.xml') #github上共享的已训练好的通用人脸数据集
# 探测图片中的人脸
faces = face_cascade.detectMultiScale(
    gray,
    scaleFactor = 1.15,
    minNeighbors = 5,
    minSize = (5,5)
)

print("发现{0}个人脸".format(len(faces)))
for(x,y,w,h) in faces:
    #cv2.rectangle(img,(x,y),(x+w,y+w),(255,255,0),2)#给识别的人脸画一个矩形
    cv2.circle(img,((x+x+w)//2,(y+y+h)//2),w//2,(255,255,0),2) #给识别的人脸画一个圆形

#创建窗口并显示图像
cv2.namedWindow("Image",0)
cv2.resizeWindow("Image", 320,320);
cv2.imshow("Image",img) #显示图片
cv2.waitKey(0)
#释放窗口
cv2.destroyAllWindows() 

1,训练数据集地址:https://github.com/opencv/opencv/tree/master/data/haarcascades 

 

三、运行结果

四、后续优化列表

现阶段的只是识别出人脸并画一个圆圈,识别率不高,而且光线暗淡的时候更是识别不出来,再者还不能做到识别自己的脸,所以提出以下几个优化进度。

1,训练识别人脸,提高识别率

2,尽可能地优化和改进在光线暗淡时的识别效果

3,增加前端和接口做成一个工具,提供训练的入口,达到可以识别自己,甚至对接其他工具

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值