如何调整子地块的高度和宽度,使其紧密贴合?

2024-04-26 00:32:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个代码可以把图片分成几个部分,我想把它们一起打印出来(它们之间有一个很小的空间),但要保留相同的大小,这样完整的图像仍然清晰可见。你知道吗

def crop_image(img, quadrant):
    img = img_to_array(img)
    d = img.shape
    rows = int(d[0]*2/3)
    cols = int(d[1]*2/3)
    q = {"TL": img[:rows,:cols,:],
         "TR": img[:rows,cols:,:],
         "BL": img[rows:,:cols,:],
         "BR": img[rows:,cols:,:]}
    return array_to_img(q[quadrant])

img = load_img('./example1.jpeg', target_size=(224, 224))
cropped = crop_image(img, 'TR')
fig, ((ax1, ax2), (ax3, ax4)) = plt.subplots(2,2)
ax1.imshow(crop_image(img, 'TL'))
ax1.axis('off')
ax2.imshow(crop_image(img, 'TR'))
ax2.axis('off')
ax3.imshow(crop_image(img, 'BL'))
ax3.axis('off')
ax4.imshow(crop_image(img, 'BR'))
ax4.axis('off')
fig.subplots_adjust(hspace=0.1)
plt.tight_layout()

enter image description here


Tags: tocropimageimgtrrowscolsimshow
1条回答
网友
1楼 · 发布于 2024-04-26 00:32:16

子地块高度和宽度之间的比率必须正好是图形各个部分的行数和列数之间的比率。你知道吗

这可以通过正在使用的gridspec的height_ratioswidth_ratios参数来实现。你知道吗

import matplotlib.pyplot as plt

img = plt.imread("https://i.stack.imgur.com/9qe6z.png")
d = img.shape
rows = int(d[0]*2/3)
cols = int(d[1]*2/3)
q = {"TL": img[:rows,:cols,:],
     "TR": img[:rows,cols:,:],
     "BL": img[rows:,:cols,:],
     "BR": img[rows:,cols:,:]}

kw = dict(height_ratios=[rows, d[0]-rows], width_ratios=[cols, d[1]-cols])

fig, ((ax1, ax2), (ax3, ax4)) = plt.subplots(2,2, gridspec_kw=kw)
ax1.imshow(q['TL'])
ax2.imshow(q['TR'])
ax3.imshow(q['BL'])
ax4.imshow(q['BR'])

for ax in (ax1, ax2, ax3, ax4):
    ax.axis("off")
fig.subplots_adjust(hspace=0.1)

plt.show()

enter image description here

相关问题 更多 >