深度学习标注完后裁剪下来目标图像成为小图
依据指定尺寸,调整宽高比
#输入原始大图;要裁剪的图像x、y最小值和最大值
def cutpic(img,xmin,xmax,ymin,ymax):
# Cropping an image
h = ymax-ymin
w = xmax-xmin
#将图像的框稍稍放大一点,露出完整的目标图像
ymin -= h * 0.1
ymax += h * 0.1
xmin -= w * 0.1
xmax += w * 0.1
if ymin <= 0:
ymin = 0
if xmin <= 0:
xmin = 0
if ymax >= img.shape[0]:
ymax = img.shape[0]
if xmax >= img.shape[1]:
xmax = img.shape[1]
#调整宽高比为0.7
if ((xmax - xmin) / (ymax - ymin) > 0.7):
temp = ((xmax - xmin) / 0.7- (ymax - ymin)) / 2
ymin -= temp
ymax += temp
if ((xmax - xmin) / (ymax - ymin) < 0.7):
temp = ((ymax - ymin) * 0.7- (xmax - xmin)) / 2
xmin -= temp
xmax += temp
if ymin <= 0:
ymin = 0
if xmin <= 0:
xmin = 0
if ymax >= img.shape[0]:
ymax = img.shape[0]
if xmax >= img.shape[1]:
xmax = img.shape[1]
#裁剪图像的语句
cropped_image = img[int(ymin):int(ymax),int(xmin):int(xmax)]
# Display cropped image
# cv2.imshow("cropped", cropped_image)
# cv2.waitKey(0)
# cv2.destroyAllWindows()
#返回裁剪后的图像
return cropped_image
最后给一下调用指令并存图片
littlepc = cutpic(img,xmin,xmax,ymin,ymax)
cv2.imwrite("little_pic ", littlepc )
点赞 收藏 给个支持谢谢