matplotlib中的ax.fill()创建白色边距

时间:2016-07-04 09:11:12

标签: image matplotlib plot resize caffe

我正在使用caffe,sciki-image,opencv和matplotlib / pyplot进行图像分割。这项工作涉及一些图像大小调整。基本上,在我加载并调整图像大小后:

put_image = caffe.io.load_image(os.path.join(source_dir, pix)
input_image = caffe.io.resize_image(input_image, (600,500), interp_order=3)

我做了很多处理。一切顺利,直到我决定为图像添加一些轮廓:

fig, ax = plt.subplots(1, 1)
ax.imshow(image2)
...
ax.fill(vald[:, 0], vald[:, 1], fill=False, color='red', linewidth=1)

其中vald是某个数组,image2是处理过的input_image

的输出

保存后

fig.savefig(save_dir + str(idx) + ".png", bbox_inches = 'tight')

我得到这样的东西,它本质上是原始图像的裁剪版本

enter image description here

当然,我的第一反应是只裁剪图像并在之后调整大小,但结果却失去了很多质量(分辨率降低)。我尝试了herehere的建议,但也没有得到任何改进。

1 个答案:

答案 0 :(得分:1)

跟进我的评论: 轴限制已更改。图像位于(0,0)和(500,600)之间的矩形中。然而,x和y-lim并不完全相同;它们的范围从(-100,-100)到(500,600)。只需使用ax.set_xlim([0, 500])ax.set_ylim([600, 0])更新限制即可删除周围的白框。

注意:如果您还想隐藏标记,可以使用ax.set_xticks([])ax.set_yticks([])轻松完成此操作,或者将标记的可见性设置为False