自动图像。安全头盔面部和头部的数据集裁剪

问题描述 投票:0回答:1

我目前正在尝试在一个数据集上运行此代码,其中包含多张戴安全帽的人的全身照片。

这是代码:

def detect_face(img):
    heregray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
    faces = face_cascade.detectMultiScale(gray, scaleFactor=1.7, minNeighbors=5)
    return faces

filename = ("C:\\Users\Vitaliy Yashchenko\\Desktop\\OpenCV Face recognition\\!!!\\dataset\\hattocrop")

for img in glob.glob(filename+'/*.*'):
    var_img = cv2.imread(img)

    face = detect_face(var_img)
    print(face)
    if (len(face) == 0):
        continue
    for(ex, ey, ew, eh) in face:
        crop_image = var_img[ey:eh+ey, ex:ex+ew]
        cv2.imshow("cropped", crop_image)
        cv2.waitKey(0)  
        cv2.imwrite(os.path.join("outputs/",str(img)),crop_image)

由于 haarcascade 只识别脸部,所以我尝试用安全帽裁剪脸部,但我对轴 ex、ey、ew、eh 有点困惑。

如果我在相应的行中运行以下命令:

crop_image = var_img[ey:eh+ey+100, ex:ex+ew] 

我得到了脸的下半部分。

在裁剪后的图像中定义脸部(头部)的较高部分的适当方法是什么,以便裁剪后的图像将包括安全帽?

python opencv face-recognition face-detection cropper
1个回答
0
投票

我不确定问题是什么,但是:

  • CV 图像和计算机视觉中的尺寸基本上是从左上角 (0,0) 到右下角 (img_width,img_height) 读取的
  • cv2 内置了一些深度学习工具,但如果您真的对该项目感兴趣,您应该使用其他工具,例如 PyTorch,您也可以使用在 OpenCV 中训练的模型
  • 最后一个提示(旁注) - 不要在目录名称中添加空格:)
© www.soinside.com 2019 - 2024. All rights reserved.