这篇文章主要介绍“Python怎么实现检测照片中的人脸数”,在日常操作中,相信很多人在Python怎么实现检测照片中的人脸数问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python怎么实现检测照片中的人脸数”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
OpenCV是一个基于Apache2.0许可(开源)发行的跨平台计算机视觉和机器学习软件库,可以运行在Linux、Windows、Android和Mac OS操作系统上。
没有opencv环境的将opencv先安装一下,为避免版本不一样导致出现问题,我这里在安装命令中将版本号写了出来。
pip install opencv-python==4.6.0.66
python解释器使用的版本是3.8.6,我这里测试使用的是这两个版本是没有问题的。
下面是整个业务的实现过程,haarcascade_frontalface_default.xml训练模型我是直接在girhub上面下载的。所以这里并没有对数据训练的实现,使用的是别人训练好的模型。
下载好训练模型之后放在自己本地,一会在调用训练模型的时候直接调用就OK了。导入opencv模块,注意这里导入的名称是cv2。
import cv2
获取训练好的数据模型(haarcascade_frontalface_default.xml这就是我们前面从github上面下载的)。
face_cascade = cv2.CascadeClassifier(r'./haarcascade_frontalface_default.xml')
读取需要分析的原始图片。
image = cv2.imread(r'./pic.jpg')
对读取的pic.jpg图片做灰度处理。
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
识别检测一下women.jpeg图片中的人脸的个数是多少个。
faces = face_cascade.detectMultiScale( gray, scaleFactor=1.15, minNeighbors=5, minSize=(5, 5), flags=cv2.CASCADE_SCALE_IMAGE )
这时实际上已经检测完成了,使用len函数计算一下检测出的人脸个数。
print("当前图片中共发现{}张人脸".format(len(faces)))
检测出的人脸的信息都存在faces的数组中,遍历一下人脸信息做处理。
for (x, y, w, h) in faces: # 在识别出的人脸部位画上圆圈 cv2.circle(image, (int((x + x + w) / 2), int((y + y + h) / 2)), int(w / 2), (0, 255, 0), 2)
显示识别出的人脸位置。
cv2.imshow("Face Nums", image) cv2.waitKey(0)
到此,关于“Python怎么实现检测照片中的人脸数”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。