(详细教程)opencv+pycharm+笔记本摄像头 做一个人脸识别 您所在的位置:网站首页 电脑摄像头显示不出来 (详细教程)opencv+pycharm+笔记本摄像头 做一个人脸识别

(详细教程)opencv+pycharm+笔记本摄像头 做一个人脸识别

2024-05-27 14:55| 来源: 网络整理| 查看: 265

目录

 

一、安装opencv-python

二、准备分类器

三、代码讲解

四、运行结果

附录:

总结

一、安装opencv-python

这里推荐使用pycharm直接安装opencv-python

打开文件——设置——python解释器——点击+号

 搜索opencv-python,点击安装包,等待片刻即可安装好

 检查是否安装好,新建一个项目输入以下代码,若无报错则安装好

import cv2 二、准备分类器

咱们使用opencv官方提供的分类器,包括面部识别,侧脸识别,眼睛识别等,如果想训练自己的分类器可以看我另外一篇文章。

我下载好的三个分类器,老铁们自取

链接:https://pan.baidu.com/s/1TqunSL6ne0dXW5TyO7DGWw  提取码:9420​​​​​​​

三、代码讲解

准备好以上工作,开始进行操作过程

import cv2 camera = cv2.VideoCapture(0) face_casecade = cv2.CascadeClassifier(r'C:\Users\Gaomagic\PycharmProjects\kouzhaodetect\mask\xml\cascade.xml')

        导入cv2包。

        cv2.VideoCapture(0)打开摄像头,0表示笔记本内置摄像头

        cv2.CascadeClassifier()加载分类器,括号里面写入刚才下载的分类器的路径,注意:要英文路径,且前面加上r,否则\表示转义符号。

while (True): ret, frame = camera.read()

        进入一个while循环,camera.read()读取一帧图像,frame为读取到的图片,ret为bool变量要么true,要么flase,当读取到图像则为true

if ret: gray_img = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) face = face_casecade.detectMultiScale(gray_img, 1.3, 2)

        ret为true时进入if判断,cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)表示把读取到的一帧图片frame转换为灰度图。face=face_casecade.detectMultiScale()第一个参数是转换完的灰度图。第二个参数是每次缩小图像的比例,默认1:1。第三个参数是匹配成功所需要的周围矩形框的数目,每一个特征匹配到的区域都是一个矩形框,只有多个矩形框同时存在时,才认为是匹配成功,比如人脸,这个默认值是3。

for (x, y, w, h) in face: cv2.rectangle(frame, (x, y), (x + w, y + h), (0, 0, 255), 2) print("(x:",(x+w)/2,",y:",(y+h)/2,")") cv2.imshow("camera",frame);

        进入for循环,cv2.rectangle()在图上绘制矩形,第一个参数为读取到的图片,第二个参数为左上点的坐标,第二个参数是右下点的坐标,第三个参数是RGB值,第四个参数是矩形边框厚度。

cv2.imshow("camera",frame)将画面展示出来。

if cv2.waitKey(1) & 0xff == ord('q'): break

如果键盘输入q则退出死循环,ord()是吧q转换为ASCALL码

camera.release() cv2.destroyAllWindows()

关闭窗口和摄像头

四、运行结果

附录: import cv2 camera = cv2.VideoCapture(0) face_casecade = cv2.CascadeClassifier(r'C:\Users\Gaomagic\PycharmProjects\kouzhaodetect\mask\xml\cascade.xml') while (True): ret, frame = camera.read() if ret: gray_img = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) face = face_casecade.detectMultiScale(gray_img, 1.3, 2) for (x, y, w, h) in face: cv2.rectangle(frame, (x, y), (x + w, y + h), (0, 0, 255), 2) print("(x:",(x+w)/2,",y:",(y+h)/2,")") cv2.imshow("camera",frame); if cv2.waitKey(1) & 0xff == ord('q'): break camera.release() cv2.destroyAllWindows() 总结

新人博主,若有错误之处请指出。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有