人脸识别代码_用几行代码带你入门人脸识别

本文介绍了使用Python和OpenCV进行人脸识别的简单步骤,包括安装库、代码实践和识别效果展示。通过调整参数和尝试不同识别库,可以进一步提高识别准确性。此外,还提及了手势识别的原理,利用凹点检测和余弦定理计算手指间的夹角来判断手势。
摘要由CSDN通过智能技术生成

今天无意中了解到人脸识别,于是就在网上查看相关资料进行学习,记录一下,供大家一起学习探讨。先来一张效果图,使用python识别集体合照中有多少个头像

cdb95517ae457a9051716d269b9160e3.gif

识别前后效果图

用到的模块是cv2

第一步:安装opencv-python

aa67c3f402ba602c65e111bb64c43259.gif

下载安装了解

第二步:代码实践

6e3c1463d5db4338fede1fd6f56bde11.gif

代码预览与运行效果

第三步:更多识别库

比如眼睛、鼻子

2f281c79a24af576d7666fdd081e48b1.gif

查看更多识别库

附源代码:

import cv2# 人像识别训练库haarcascade_frontalface_default.xmlface_patterns = cv2.CascadeClassifier(cv2.data.haarcascades + "haarcascade_frontalface_default.xml")# 读取图片sample_image = cv2.imread('face.jpg')# 获取识别到的人脸faces = face_patterns.detectMultiScale(sample_image,scaleFactor=1.1,minNeighbors=9,minSize=(10, 20))'''参数1:image--待检测图片,一般为灰度图像加快检测速度;参数2:objects--被检测物体的矩形框向量组;参数3:scaleFactor--表示在前后两次相继的扫描中,搜索窗口的比例系数。默认为1.1即每次搜索窗口依次扩大10%;参数4:minNeighbors--表示构成检测目标的相邻矩形的最小个数(默认为3个)。 如果组成检测目标的小矩形的个数和小于 min_neighbors - 1 都会被排除。 如果min_neighbors 为 0, 则函数不做任何操作就返回所有的被检候选矩形框, 这种设定值一般用在用户自定义对检测结果的组合程序上;参数5:flags--要么使用默认值,要么使用CV_HAAR_DO_CANNY_PRUNING,如果设置为 CV_HAAR_DO_CANNY_PRUNING,那么函数将会使用Canny边缘检测来排除边缘过多或过少的区域, 因此这些区域通常不会是人脸所在区域;参数6、7:minSize和maxSize用来限制得到的目标区域的范围。'''# 将识别到的人脸框出来print ("共检测到%s张脸"%len(faces))#i=1for (x, y, w, h) in faces: font = cv2.FONT_HERSHEY_SIMPLEX cv2.rectangle(sample_image, (x, y), (x+w, y+h), (0, 255, 0), 2) #cv2.putText(sample_image, str(i), (x, y-5), font, 0.5, (252, 255, 1), 1, cv2.LINE_AA) #i=i+1cv2.imwrite('result.png', sample_image)

小结:

关于人脸的识别,网上找了很多张图片实验,对于一些不清楚、遮挡的还是不够准确,在学习过程中可以尝试调整参数如minNeighbors或更换下载一些识别配置文件

11db4c17ff450f6ecb45e1fff6f92385.png

识别用的配置文件

另附一个手势识别的原理

利用opencv提供的 convexityDefects 凹点检测函数检测图像凹陷的点, 然后利用, 然后根据凹陷点中的 (开始点, 结束点, 远点)的坐标, 利用余弦定理计算两根手指之间的夹角, 其必为锐角, 根据锐角的个数判别手势.

锐角个数为0 ,表示 手势是 拳头,

锐角个数为1 ,表示 手势是 剪刀

锐角个数为2 ,表示 手势是 ,

锐角个数为3 ,表示 手势是 ,

锐角个数为4 ,表示 手势是

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值