如何处理不同的图像尺寸

时间:2018-08-03 11:21:38

标签: python image computer-vision pose-estimation

我正在处理图像以查找外部身体点,但是当我保存它们时,它们的大小不同,这会造成问题。

  1. 我的原始图片是一个人的。 (1.8Mb)

  2. 我创建了一个人的遮罩,以从原始图像中检测出外部身体部位并保存。 (400kb)

  3. 我从蒙版获得了外部人体点,并将它们绘制在原始图像上,但是由于原始图像和蒙版图像的大小不同,它们未对齐。

    要保存无轴且具有完整尺寸的图像以使其与原始图像匹配,我通过以下方法进行保存。保存后,它们看起来完全一样,但是由于大小不同,点未对齐。

      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)
    

在原始图像上绘制点时的结果:

Result when I plot points on original image

如何处理此类问题?

1 个答案:

答案 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 也保存原始图像。这样可以确保它们都具有相同的尺寸。