1. 磐创AI-开放猫官方网站首页
  2. Medium

用项目讲解OpenCV人脸检测


人脸检测是一种计算机技术,用于从数字图像中硬化人脸的各种应用。人脸检测在人脸识别、运动检测器、情感接口、摄影等领域有着广泛的应用。

本文将介绍如何使用Python OpenCV直接通过网络摄像头或视频文件进行人脸检测。

首先,您需要安装OpenCV和Numpy。我们将使用完整的Python编程语言完成本教程,所以让我们开始吧。

存储库设置

我们将同时使用mediapipe和OpenCV。以下是关于这些库的更多信息。

媒体管道

MediaPipe与研究和开发人员的解决方案和应用程序合作,用于移动、网络应用、边缘计算等领域的机器学习。

MediaPipe姿势处理RGB图像,并在检测到的最突出的人上返回姿势地标。请参考使用示例。examples.

导入CV2、媒体管道和时间。

安装媒体管道的步骤

pip install mediapipe

OpenCV

OpenCV是一个图像处理库。它是为解决计算机视觉问题而设计的。OpenCV是在Python中扩展的C/C++库。

以下是安装OpenCV的命令

pip install opencv-python

我们开始吧

现在创建faceDection.py。首先,导入我们这里需要的库。

import cv2

time()函数接受浮点数,并返回自纪元以来的当前时间(以秒为单位)。如果系统时钟提供分数秒,则可能会出现分数秒。

cv2.VideoCapture(​VIDEO_PATH​)

这个是用于视频路径的。如果您不想使用网络摄像头,则必须选择此选项。

cap = cv2.VideoCapture('/home/python/OpenCV/faceDetect/faceD1.mp4')

如果您使用网络摄像头,那么

cap = cv2.VideoCapture(0) #depends on your system 0 or 1

设置帧频

pTime = 0

MediaPipe人脸检测。

MediaPipeFace Detection处理RGB图像并返回检测到的脸部位置数据的列表。

mpFaceDect = mp.solutions.face_detection

cv2.cvtColor(src,code[,dst[,dstCn]])将图像从一种颜色空间转换为另一种颜色空间。该函数将输入图像从一种颜色空间转换到另一种颜色空间。以防发生变形。至-自RGB颜色空间,应明确指定通道的顺序(RGB或BGR)。请注意。OpenCV中的默认颜色格式通常称为RGB,但它实际上是BGR(字节颠倒)。

faceDetection.process(self,image:np.ndarray)函数处理RGB图像并返回检测到的面部位置数据的列表。RGB图像表示为NumPy ndarray。

DRAW_DETACTION(IMAGE,DETACTION,KEYPOINT_DRANGING_SPEC,BBOX_DRANGING_SPEC)函数在图像上绘制检测边界框和关键点。

cv2.putText(img,text,org,fontFace,fontScale,color[,ickness[,lineType[,bottomLeftOrigin])

让我们讨论一下参数。

cv2.putText(img, f'FPS: {int(fps_rate)}', (20, 70), cv2.FONT_HERSHEY_PLAIN,3  ,(0, 255, 0), 2)

以下是完整的代码:

我们可以将它转换成一个模块,这样我们就可以非常容易地使用这个值,创建一个类似faceDetectModule.py的模块,然后按照前面编写的那样复制所有代码。

然后创建一个类。我们应该能够做的是,我们应该创建一个对象,并创建一个方法,使我们能够检测姿势并为我们找到所有这些点。

Init function(self, min_detection_confidence=0.5, model_selection=0)

上面的代码初始化MediaPipeFace Detection对象。

参数:

完整代码请单击此处

以下是您可以根据需要使用和自定义的完整代码。请看一下。

以下是视频文件的输出

网络摄像头的输出

结论

在本文中,我们讨论了一个完整的人脸检测方案。从本文中,您可以了解有关人脸检测的知识,还可以根据需要扩展此项目。

感谢您的阅读。

祝您今天过得愉快。

原创文章,作者:fendouai,如若转载,请注明出处:https://panchuang.net/2021/07/13/%e7%94%a8%e9%a1%b9%e7%9b%ae%e8%ae%b2%e8%a7%a3opencv%e4%ba%ba%e8%84%b8%e6%a3%80%e6%b5%8b/

联系我们

400-800-8888

在线咨询:点击这里给我发消息

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息