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

Posted

技术标签:

【中文标题】自动图像。安全头盔面部和头部的数据集裁剪【英文标题】:Automated img. dataset cropping of safety helmet faces and heads 【发布时间】:2021-10-29 21:33:27 【问题描述】:

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

代码如下:

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]

我得到了脸的下半部分。

在裁剪后的 img 中定义面部(头部)较高部分的合适方法是什么,以便裁剪后的图像包含安全安全帽?

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

以上是关于自动图像。安全头盔面部和头部的数据集裁剪的主要内容,如果未能解决你的问题,请参考以下文章

如何在 LFW 数据集上训练 CNN?

如何裁剪可可数据集以进行预处理?

python - 裁剪手写数字的图像

佩戴安全帽数据集使用说明和下载

如何使用 Tensorflow 2.0 数据集在训练时执行 10 次裁剪图像增强

面部表情识别2:Pytorch实现表情识别(含表情识别数据集和训练代码)