我正在进行屏幕截图(PNG格式)调整大小,然后通过scipy.misc
模块(imread,imresize,imsave函数)以TIF格式将其写回。 TIF格式图像将被输入Tesseract-OCR。但是,Tesseract抱怨TIF文件的元数据中指定的 dpi为0 。如何通过scipy.misc.imsave
或任何其他方法保存图像时指定此项?
答案 0 :(得分:3)
不分析你的问题究竟来自哪里,the approach of Mark(也许这对你来说已经足够了;也许不是;我可以想象你的代码中还有其他东西可能是原因)可以通过使用{{来模拟3}}(我在scipy的包装器中没有看到这个选项)。
实际上,我不是像他那样重写标签,而是在完成原始任务时关注这些标签。在实践中,两种方法都应该没问题。
scipy的概率非常高,Pillow(Note 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,但我从未使用它,也无法保证它。