自动图像。安全头盔面部和头部的数据集裁剪
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 中训练的模型 最后一个提示(旁注)- 不要在目录名称中添加空格 :)【讨论】:
以上是关于自动图像。安全头盔面部和头部的数据集裁剪的主要内容,如果未能解决你的问题,请参考以下文章