图像处理方法实现多目标检测与裁剪
简述
对于一些特殊多目标图像,例如细粒度目标、缺乏标注文件等。或是图像前背景区分较明显的图像,不适合用深度学习模型进行目标定位与分割。相比之下,利用较为传统的图像处理方式,可以更高效地实现对上述图像的目标定位与分割(抠图)。
本文将分为三个部分详细讲解利用opencv对多目标图像进行目标定位与分割的实现过程。
1.批量resize
先对目标文件夹下所有图片进行resize,将所有图片resize到同一大小,方便后续进行批量操作。
1)效果
原图:
resize后的图像:
将图片resize成800×800,原图为502×502。
2)原理
先利用os.listdir方法将目标文件夹下的所有图像读取出来,再分别根据图像的宽高等比例地将图像resize成目标大小。最后利用opencv的imwrite()方法批量保存resize后的图片。
3)代码分析
- 利用for循环将目标文件夹下所有图片读取出来。
for i in os.listdir(imgs_p):
img_path=os.path.join(imgs_p,i)
img = cv2.imread(img_path)
- 与原图等比例进行resisze
height, width = img.shape[:2] # 得到行和列的长度
scale=size/height # 得到size和图像高的缩放比例
height=size
width=int(width*scale)
img = cv2.resize(img, (width, height))
- 批量保存
new_img_path=os.path.join(imgs_save_p,i)
cv2.imwrite(new_img_path,img)