我正在处理图像以查找外部身体点,但是当我保存它们时,它们的大小不同,这会造成问题。
我的原始图片是一个人的。 (1.8Mb)
我创建了一个人的遮罩,以从原始图像中检测出外部身体部位并保存。 (400kb)
我从蒙版获得了外部人体点,并将它们绘制在原始图像上,但是由于原始图像和蒙版图像的大小不同,它们未对齐。
要保存无轴且具有完整尺寸的图像以使其与原始图像匹配,我通过以下方法进行保存。保存后,它们看起来完全一样,但是由于大小不同,点未对齐。
plt.axis('off')
fig.axes.get_xaxis().set_visible(False)
fig.axes.get_yaxis().set_visible(False)
plt.savefig('kmask.jpg',bbox_inches='tight',pad_inches = 0,dpi=1500)
在原始图像上绘制点时的结果:
如何处理此类问题?
答案 0 :(得分:0)
据我所知,您将遮罩保存为与原始图像不同的大小。
解决此问题的一种方法是先弄清楚原始图像的分辨率。如果您不知道,可以随时检查:
img = plt.imread('body_image.jpg')
print(img.shape)
# The first two numbers correspond to the height and width of the image in pixels
问题是matplotlib不能以相同的方式处理图像分辨率。相反,它需要图形尺寸(英寸)和DPI(或每英寸多少像素)。一种方法是计算所需的值,然后相应地保存图像。
image_height_in_pixels = height_in_inches * dpi
然后使用这两个数字保存掩码。
f = plt.figure(figsize=(height_in_inches, width_in_inches))
plt.axis('off')
plt.savefig('kmask.jpg', bbox_inches='tight', pad_inches=0, dpi=dpi)
如果这样不起作用,请尝试使用matplotlib 也保存原始图像。这样可以确保它们都具有相同的尺寸。