在网上查了很多答案,最终得到的效果都不是很理想,最终根据自己的情况进行了更改:
pyplot.axis('off') #增加这行关闭坐标轴显示,但仍有空白区域
#关键在于bbox_inches = 'tight',pad_inches = 0,去掉空白区域
pyplot.savefig(save_dir,bbox_inches = 'tight',pad_inches = 0)
完整代码:
def detect_save(im_array,model,save_dir):
yhat = model.detect(im_array, verbose=0)[0]
pyplot.imshow(im_array[0])
ax = pyplot.gca()
# 绘制每个绘图框
class_ids = yhat['class_ids']
index = 0
for box in yhat['rois']:
# 获取坐标
y1, x1, y2, x2 = box
# 计算绘图框的宽度和高度
width, height = x2 - x1, y2 - y1
# 创建形状对象
if class_ids[index] == 1:
rect = Rectangle((x1, y1), width, height, fill=False, color='green')
if class_ids[index] == 2:
rect = Rectangle((x1, y1), width, height, fill=False, color='red')
# 绘制绘图框
ax.add_patch(rect)
index += 1
# 显示绘制结果
pyplot.axis('off') #去除空白区域
pyplot.savefig(save_dir,bbox_inches = 'tight',pad_inches = 0)
pyplot.clf()
效果展示:
增加前:
增加后: