感谢B站up主dorian与ai的视频《一天搞定人脸识别项目!学不会up直接下跪!(python+opencv)》。我是从这里学会的。链接放在最后面
这是全部代码
前面是导入opencv,后面是定义人脸检测的函数,然后调取摄像头,设置检测的次数和窗口的关闭,最后是释放内存和释放摄像头。
绿色的注释部分是详细的分解部分,在注释里面说明了每一步的用处。
以下是详细说明
先来看看定义函数部分
第一行是把画面截取出来,转化为灰度图像,是为了减少色彩的干扰,使检测结果更准确。
第二行是运用opencv的自带库来进行人脸检测
第三行是人脸检测的参数,注释就是可以改变的参数部分,不加就是默认,1.01是检测的倍数,5是检测的次数,两个()是检测的人脸的大小。
再下面的xywh是绘制人脸检测的矩形,是一个红色的宽度为2的矩形。
最后是把检测的结果呈现出来
这一行就是读取摄像头,可以输入数字来改变调用的摄像头,还可以输入文件路径,文件名来直接检测某个具体的视频,这两个我都将展示一下。
这里是给循环用来判断什么时候检测人脸,什么时候结束视频,一个是按下英文输入法下的'q',如果是视频就是可以在视频结束后结束。
这里是我具体的学习过程中的敲过的代码,关于这些代码,后面的注释应该都非常清楚的说明了作用。
显示灰度就是显示灰度图片
修改尺寸就是修改读取的图片的尺寸
坐标是给了一个初始坐标,为了展示矩阵的绘制,来运用到人脸检测的矩阵绘制
还有绘制圆形,这个圆形是蓝色的,因为中间color的改变,这里值得注意的是opencv里color的三通道是bgr,和平时的rgb是相反的。
while True就是等待的循环
这里可以看到cv.waitKey(0).这里的参数是0.这个应该是个错误,实际测试中改为比0大的数字都可以,不然如果是0调用摄像头就是一次只有一帧,按q才能跳下一帧,而视频直接打不开,就是程序崩溃,所以我在自己的代码中改为了10。这些是看弹幕我才明白错误在哪的,所以B站的氛围值得表扬。
这里以图像的形式作一个展示,给自己的脸打了个码,下面的句子是学校的校训。
然后改变读取的内容做一个视频的展示
找了一个以前玩游戏时录制的视频,可以看出对于大部分的人脸都是检测出来的了,除了一些与真实人脸相差较大的角色的脸没有检测出。
以上便是全部内容。关于python,pycharm,opencv的下载都可以去学习去看这个up主发的视频。
这是视频的链《一天搞定人脸识别项目!学不会up直接下跪!(python+opencv)》_哔哩哔哩_bilibili