【Python应用一】haar人脸检测

一、通过anaconda3安装openCV

使用国内源来安装速度更快,参考教程:知乎教程
下载了whl文件之后,按win+R键输入cmd回车,使用命令将当前路径转移到文件夹下,然后使用pip install命令安装。
安装

二、测试openCV模块

安装完毕之后,先测试一下openCV是否可以使用,所以可以先输入一些简单的代码来测试一下。

import cv2
#打开项目文件夹下面的photo子文件夹下的图片文件
img = cv2.imread(r'photo\lena.png')
cv2.imshow("lena",img)
cv2.waitKey()

然后运行,就可以看到弹出的一个图片窗口。
在这里插入图片描述

三、使用haar分类器检测人脸

检测人脸的步骤一共有三步:
1.打开图片
2.检测人脸
3.显示图片
没错,就是这么简单。
接下来上代码:

import cv2
#国际惯例,先打开图片
img = cv2.imread(r'photo\lena.png')
#图像灰度化
gray_img = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
#导入已经储存好人脸数据的文件来识别人脸
face_img = cv2.CascadeClassifier(r'haarcascade_frontalface_default.xml')
#这里scaleFactor参数是图像缩小比例,minNeighbors是制定目标的重复检测次数
faces = face_img.detectMultiScale(gray_img,scaleFactor=1.05,minNeighbors=5)
#使用rectangle方法来画个绿框框
for x,y,w,h in faces:
    img = cv2.rectangle(img,(x,y),(x+w,y+h),(0,255,0),3)
#显示图片
cv2.imshow("lena",img)
cv2.waitKey()

完成
在这里插入图片描述

四、打开摄像头进行实时检测

视频的本质就是图片流,每一帧都是一张图片,60帧的视频意思就是一秒有60张图片。
所以使用摄像头进行人脸检测完全可以基于上面的代码进行修改,只需要将摄像头捕获的图片逐个进行人脸检测再输出就可以了。

import cv2
#把原先打开图片的语句注释掉,改为使用从摄像头获取图片
#img = cv2.imread(r'photo\lena.png')
#打开摄像头。这里的0是指要打开的摄像头,有多个摄像头可以改为1或者2等等
cap = cv2.VideoCapture(0)
while True:
    #读取信息
    ret,img = cap.read()
	#检测是否有捕获到帧
    if ret == True:
        #灰度化
        gray_img = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
        #人脸检测
        #导入人脸数据
        face_img = cv2.CascadeClassifier(r'first/haarcascade_frontalface_default.xml')
        #把图片进行处理
        faces = face_img.detectMultiScale(gray_img,scaleFactor=1.05,minNeighbors=5)
        #判断是否有获取到人脸,有则画个框
        if len(faces)>0:
            for x,y,w,h in faces:
                img = cv2.rectangle(img,(x,y),(x+w,y+h),(0,255,0),3)
        #输出
        cv2.imshow('capture',img)
        #等待键盘输入,如果输入为q,则跳出循环,结束
        if cv2.waitKey(30) & 0xFF == ord('q'):
            break
    else:
        break
#释放资源,关闭窗口
cap.release()
cv2.destroyAllWindows()
  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值