人脸检测是一种计算机技术,用于从数字图像中硬化人脸的各种应用。人脸检测在人脸识别、运动检测器、情感接口、摄影等领域有着广泛的应用。
本文将介绍如何使用Python OpenCV直接通过网络摄像头或视频文件进行人脸检测。
首先,您需要安装OpenCV和Numpy。我们将使用完整的Python编程语言完成本教程,因此让我们开始使用-uro™s。
存储库设置
我们将同时使用mediapipe和OpenCV。以下是关于这些库的更多信息。
媒体管道
MediaPipe与研究和开发人员合作,为移动、网络应用、边缘计算等领域的机器学习提供™解决方案和应用程序。
MediaPipe姿势处理RGB图像,并在检测到的最突出的人上返回姿势地标。请参考使用示例。examples.
导入CV2、媒体管道和时间。
安装媒体管道的步骤
pip install mediapipe
OpenCV
OpenCV是一个图像处理库。它是为解决计算机视觉问题而设计的。OpenCV是在Python中扩展的C/C++库。
以下是安装OpenCV的命令
pip install opencv-python
让?EURO™‘s开始吧
现在创建faceDection.py。首先,导入我们这里需要的库。
import cv2
time()函数接受浮点数,并返回自纪元以来的当前时间(以秒为单位)。如果系统时钟提供分数秒,则可能会出现分数秒。
cv2.VideoCapture(?EURO
这个是用于视频路径的。如果您不想使用网络摄像头,则必须选择此选项。
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/14/%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-2/
这个是用于视频路径的。如果您不想使用网络摄像头,则必须选择此选项。
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/14/%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-2/