Python OpenCV 人脸识别

Python OpenCV 人脸识别简单运用PythonOpenCV对图片上人脸进行识别。

简单运用Python OpenCV对图片进行人脸识别,

我们先看效果及代码:

 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是传入的灰度图片,也可以用未进行图像转换的img11.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) 等待按键,没有此行图片会一闪而过。

文件路径:需要的文件在同一目录中。

Python OpenCV 人脸识别

 识别的关键函数与相关参数,可通过调节参数减小识别误差:

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

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注