工具:
仅用到PyCharm
如果只想看完整代码可以直接跳到最后。
首先,在PyCharm上安装opencv-python,opencv-contrib-python,这里我直接安装最新的4.5.1
如果你没有下载,那就点开pycharm的设置
在python解释器中,点击右上角的加号,然后输入opencv-python,opencv-contrib-python进行安装即可
首先明确思路:
1.导入人脸识别的级联分类器cv2.CascadeClassifier("haarcascade_frontalface_default.xml")
这里括号里的内容是haarcascade_frontalface_default.xml文件路径,
在你安装好opencv-python库后,那个.xml文件是opencv自带的,如果你找不到,可以点下载 提取码:0000
2.载入你要识别的人脸图片,这要用到cv2.imread("图片路径“)
这里,还要注意还需要把载入的图片进行一次灰度处理
i = cv2.imread("图片路径",0)
,也就是在之前imread()加个0,加0就是对图片进行灰度处理。如果不进行灰度处理,图片识别的速率会降低。
3.下面就用detectMultiScale()函数来检测人脸
faces = facec.detectMultiScale(灰度图片,1.1,4)
那个1.1就是图片尺寸参数默认就是1.1,那个4就是至少4次重叠检验才确定有人脸存在。
4.还有就是要加一个矩形把人脸框起来,先用一个for循环把检测的人脸遍历一次,在依次把脸框起来,代码如下:
for (x,y,w,h) in faces:
cv2.rectangle(img,(x,y),(x+w,y+h),(0,255,0),2)
这里在注意一点就是cv2.rectangle()函数,cv2.rectangle(检测图片,矩形左上角坐标,矩形右下角坐标,矩形颜色,矩形边缘线的粗细)
那个在opencv中坐标和我们印象中的不同,它方向如下:
5.展示图片cv2.imshow("窗口名称”,图片)
6.结束进程,用cv2.waitKey(0)函数,用法是按下任意键结束进程。
下面,我展示我完整代码:
import cv2
facec = cv2.CascadeClassifier("haarcascade_frontalface_default.xml")
img = cv2.imread("测试图片路径")
i = cv2.imread("测试图片路径",0)
faces = facec.detectMultiScale(i,1.1,4)
for (x,y,w,h) in faces:
cv2.rectangle(img,(x,y),(x+w,y+h),(0,255,0),2)
cv2.imshow("l",img)
cv2.waitKey(0)
结果可以看看:
当然,我们所作的这些都是调用并运用opecv中的级联分类器,我们也可以自定义级联分类器。最后,感叹一声opencv太强了啊。