简单运用Python OpenCV对图片进行人脸识别,
我们先看效果及代码:
import cv2
img1 = cv2.imread('6.jpeg')
gray = cv2.cvtColor(img1, cv2.COLOR_BGR2GRAY)
face_detector = cv2.CascadeClassifier("haarcascade_frontalface_default.xml")
faces = face_detector.detectMultiScale(gray, 1.1, 3,cv2.CASCADE_SCALE_IMAGE,(50,50),(100,100))
for (x, y, w, h) in faces:
cv2.rectangle(img1, (x, y), (x + w, y + w), (0, 255, 0),2)
cv2.imshow("img",img1)
cv2.waitKey(0)
看着几行代码也是很简单,挨着介绍一下,方便于理解
import cv2 即导入opencv2模块,导入才能使用opencv,类似于C语言中的头文件。
img1 = cv2.imread(‘6.jpeg’) 通过cv2模块把图片读取到img1中,需要指明图片的路径,因为图片与代码在同一目录,因此可以不写路径。
gray = cv2.cvtColor(img1, cv2.COLOR_BGR2GRAY) 将图片修改为灰度图像输出到gray,使用灰度图像识别速度会快一些,如果不使用灰度图像也可以。
face_detector = cv2.CascadeClassifier(“haarcascade_frontalface_default.xml”) 导入正面人脸检测的级联分类器,若自己有训练好的人脸识别文件也可以将此xml替换。替换成其他文件也可用时识别其他内容,不仅仅局限与人脸。
faces = face_detector.detectMultiScale(gray, 1.1, 3,cv2.CASCADE_SCALE_IMAGE,(50,50),(100,100)) 进行人脸识别;gray是传入的灰度图片,也可以用未进行图像转换的img1;1.1参数可以决定两个不同大小的窗口扫描之间有多大的跳跃,这个参数设置的大,则意味着计算会变快,但如果窗口错过了某个大小的人脸,则可能丢失物体,默认为1.1;默认值为3表明至少有3次重叠检测,我们才认为人脸确实存;cv2.CV_HAAR_SCALE_IMAGE 按比例检测;(50,50) 寻找人脸的最小区域;(100,100)寻找人脸的最大区域。
for (x, y, w, h) in faces:
cv2.rectangle(img1, (x, y), (x + w, y + w), (0, 255, 0),2) 读取人脸识别的位置与响应的区域大小,并画出来。rectangle为画矩形;画在img1图片中;(x, y)是矩形起点坐标;(x + w, y + w)是矩形终点坐标;(0, 255, 0) 是RGB;2为线条粗细。
cv2.imshow(“img”,img1) 显示画好矩形的人脸识别图片。
cv2.waitKey(0) 等待按键,没有此行图片会一闪而过。
文件路径:需要的文件在同一目录中。
识别的关键函数与相关参数,可通过调节参数减小识别误差:
detectMultiScale(const Mat& image, double scaleFactor=1.1,int minNeighbors, int flag,minSize, maxSize)
1.image为输入的图像。
2.scaleFactor: 其原理是系统会以不同的区块大小对图片进行扫描,再进行特征对比。参数无特别需求,一般设置为1.1。
3.minNeighbors 此为控制误检率参数,默认值为3。
4.flag此参数设置检测模式,可取值如下:
cv2.CV_HAAR_SCALE_IMAGE 按比例检测
cv2.CV_HAAR_DO_CANNY_PRUNING 利用Canny 边缘检测器排除一些边缘很少或很多的图像区域
cv2.CV_HAAR_FIND_BIGGEST_OBJECT 只检测最大物体
cv2.CV_HAAR_DO_ROUGH_SEARCH 只做初步检测。
5.minSize 设置最小的识别区块。
6.maxSize 设置最大的识别区块,低于minSize和高于maxSize的话就不会检测出来。
今天的文章Python OpenCV 人脸识别分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/26941.html