从面部图像中检测是计算机视觉的众多迷人应用之一。在此项目中,我们将OPENCV结合起来,以面对位置和用于性别分类的Roboflow API,制作一种识别面部的设备,检查它们并预测其性别。我们将利用Python(尤其是在Google Colab中)输入和运行此代码。该直接提供了易于遵循的代码的演练,澄清了每个步骤,以便您可以理解并将其应用于您的合资企业。
学习目标步骤4:设置性别检测api 步骤5:处理每个检测到的face 如何使用python中的opencv和roboflow检测性别? 让我们学习如何在python中实现opencv和roboflow进行性别检测: 步骤1:导入库和上传图像 主要步骤是结果重要的库。我们正在利用OpenCV进行图片准备,用于处理簇的数字,而Matplotlib可视化。我们还上传了一个图像,其中包含我们要分析的面孔。 来自google.colab导入文件 导入CV2 导入numpy作为NP 从matplotlib导入PHPLOT作为PLT 来自penperion_sdk import inferencehttpclient #上传图像 上传= files.upload() #加载图像 对于uploaded.keys()中的文件名: img_path =文件名
既然我们已经检测到了面孔,我们使用conperionhttpclient初始化roboflow api来预测每个检测到的面部的性别。
通过使用Roboflow API URL和API键配置客户端,从而简化了与Roboflow的预训练模型的交互。此设置使请求可以发送到Roboflow上托管的性别检测模型。 API键是用于身份验证的唯一标识符,可以安全地访问Roboflow API。
步骤5:处理每个检测到的脸部from google.colab import files import cv2 import numpy as np from matplotlib import pyplot as plt from inference_sdk import InferenceHTTPClient # Upload image uploaded = files.upload() # Load the image for filename in uploaded.keys(): img_path = filename我们循环遍历每个检测到的脸部,在其周围绘制一个矩形,然后裁剪脸部图像以进行进一步处理。每个裁剪的脸部图像均可保存并发送到Roboflow API,在该API中,性别 - 检测-QIYYG/2模型用于预测性别。
#初始化脸部计数 face_count = 0 #列表以存储带有标签的裁剪面部图像 chropped_faces = [] #处理每个检测到的面孔 for(x,y,w,h)面部: face_count = 1 #在检测到的面孔周围绘制矩形 cv2.Rectangle(img,(x,y),(x w,y h),(255,0,0),2) #提取面部区域 face_img = img [y:y h,x:x w] #暂时保存面部图像 face_img_path ='temp_face.jpg' cv2.imwrite(face_img_path,face_img) #使用inperionhttpclient检测性别 结果= client.infer(face_img_path,model_) 如果结果中的“预测”和结果[“预测”]: 预测=结果['预测'] [0] 性别=预测['class'] 信心=预测['信心'] #用性别和信心标记矩形 label = f'{gender}({prucors:.2f})' cv2.putText(img,label,(x,y -10),cv2.font_hershey_simplex,0.8,(255,0,0),2) #将裁剪的脸和标签添加到列表中 chropped_faces.append((face_img,label))
最后,我们可视化输出。我们首先将图像从BGR转换为RGB(因为OpenCV默认使用BGR),然后显示检测到的面部和性别预测。之后,我们以各自的标签向单个裁剪的面孔展示。
# Load the Haar Cascade model for face detection face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades 'haarcascade_frontalface_default.xml')
图像转换:
我们使用matplotlib在其顶部用检测到的面部和性别标签显示图像。
# Load the image and convert to grayscale img = cv2.imread(img_path) gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # Detect faces in the image faces = face_cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=5, minSize=(30, 30))
a。该模型分析图像以检测面部,然后根据训练有素的AI算法将每个检测到的面孔分为男性或女性。它为预测输出置信度得分。
# Initialize InferenceHTTPClient for gender detection CLIENT = InferenceHTTPClient( api_url="https://detect.roboflow.com", api_key="USE_YOUR_API" )a。该模型以置信度得分表明了高精度,表明可靠的预测。例如,结果的置信度得分超过80%,显示出强大的性能。
可以进行哪种模型进程?
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3