如何通过scipy.misc.imsave将图像保存为tif时指定dpi?

时间:2017-10-09 15:17:51

标签: python image-processing scipy ocr tesseract

我正在进行屏幕截图(PNG格式)调整大小,然后通过scipy.misc模块(imread,imresize,imsave函数)以TIF格式将其写回。 TIF格式图像将被输入Tesseract-OCR。但是,Tesseract抱怨TIF文件的元数据中指定的 dpi为0 。如何通过scipy.misc.imsave或任何其他方法保存图像时指定此项?

2 个答案:

答案 0 :(得分:3)

不分析你的问题究竟来自哪里,the approach of Mark(也许这对你来说已经足够了;也许不是;我可以想象你的代码中还有其他东西可能是原因)可以通过使用{{来模拟3}}(我在scipy的包装器中没有看到这个选项)。

实际上,我不是像他那样重写标签,而是在完成原始任务时关注这些标签。在实践中,两种方法都应该没问题。

scipy的概率非常高,PillowNote that Pillow (https://python-pillow.org/) is not a dependency of SciPy, but the image manipulation functions indicated in the list below are not available without it.;此列表包含imsave)。

from scipy.misc import ascent    # test image
import PIL.Image

scipy_img = ascent().astype('uint8')
arr2im = PIL.Image.fromarray(scipy_img)

arr2im.save('test.tif', format='TIFF',
        dpi=(100., 100.),  # there still seems to be a bug when using int's here
        compression='tiff_lzw',)

使用exiftool进行检查:

ExifTool Version Number         : 10.63
File Name                       : test.tif
...
Image Width                     : 512
Image Height                    : 512
Bits Per Sample                 : 8
Compression                     : LZW
...
X Resolution                    : 100
Y Resolution                    : 100
...
Resolution Unit                 : inches
Image Size                      : 512x512
Megapixels                      : 0.262

答案 1 :(得分:1)

请在“任何其他方法”下提交此内容: - )

您可以使用exiftool设置分辨率,如下所示:

exiftool SomeImage.tif  -xresolution=300 -yresolution=300 -resolutionunit=inches

使用 ImageMagick

进行检查
identify -verbose SomeImage.tif

Image: SomeImage.tif
  Format: TIFF (Tagged Image File Format)
  Mime type: image/tiff
  Class: DirectClass
  Geometry: 100x100+0+0
  Resolution: 300x300
  Print size: 0.333333x0.333333
  ...
  ...

我建议您使用os.system()来运行此命令。

存在Python wrapper,但我从未使用它,也无法保证它。