脑壳有包又花时间折腾了一下,其实之前也折腾过,主要是新看了一个方法
在下图中查找脸部

第一种方案:
使用了opencv 的cv2.FaceDetectorYN. ,完整代码如下:
import numpy as np
import cv2
img=cv2.imread("00000523.jpg")
# img=cv2.resize(img, new_shape)
faceDetector=cv2.FaceDetectorYN.create("opencv_zoo/models/face_detection_yunet/face_detection_yunet_2023mar.onnx","",(img.shape[1],img.shape[0]))
faces = faceDetector.detect(img)
f = faces[1]
for ps in f:
x=int(ps[0])
y=int(ps[1])
w=int(ps[2])
h=int(ps[3])
s=ps[14]
# print(x,y,w,h,s)
cv2.rectangle(img, (x, y), (x+w, y+h), (0,0,255), 2)
cv2.namedWindow("d",0);
cv2.resizeWindow("d", int(img.shape[1]/2), int(img.shape[0]/2));
cv2.imshow("d",img)
cv2.waitKey()
# cv2.destoryAllWindows()
cv2.destroyAllWindows()
结果如下:

本文比较了OpenCV的FaceDetectorYN和CascadeClassifier在脸部检测中的局限性,发现InsightFace的方案效果更好,能提供更准确的面部定位,尽管速度稍慢,且包含年龄和性别信息。作者还展示了InsightFace在标记人脸数据集和跨图片推理中的应用。
最低0.47元/天 解锁文章
2616

被折叠的 条评论
为什么被折叠?



