如何使用opencv增加dpi?

yoz*_*ama 12 python opencv

在使用opencv由ocr读取之前,我需要增加图像的dpi。问题是:

  1. 我现在不知道我的图像dpi
  2. 而且我不知道如何增加图像的dpi

我在谷歌搜索,几乎每个答案建议使用 resize

cv2.resize()

image = cv2.imread("source.png")
resized_image = cv2.resize(image, (100, 50)) #I need to change it to 300 DPI
Run Code Online (Sandbox Code Playgroud)

resize 仅更改图像的大小,但毕竟不增加图像的dpi,因为我尝试使用它,并且当我在photoshop中签入时,dpi不变

显示请帮助我解决这两个问题

用opencv怎么做?

老实说我需要将dpi更改为300,为什么我需要知道当前的dpi?因为如果已经dpi > 300,所以我不需要转换它。

Oya我用python做

Mar*_*ell 5

dpi 只是 JPEG/TIFF/PNG 标头中的一个数字。在您打印图像之前,它与世界和他的狗完全无关,然后它决定了打印的图像尺寸(以像素为单位)的大小。

在图像处理过程中,它无关紧要。唯一感兴趣的是您拥有的像素数。这是图像质量或信息内容的最终决定因素 - 无论您想如何描述它。

我不相信你可以用OpenCV设置它。您当然可以在终端中像这样使用ImageMagick设置它:

mogrify -set density 300 *.png           # v6 ImageMagick
magick mogrify -set density 300 *.png    # v7 ImageMagick
Run Code Online (Sandbox Code Playgroud)

您可以通过以下方式检查:

identify -format "Density: %x x %y" SomeImage.jpg    # v6 ImageMagick
magick identify -format ... as above                 # v7 ImageMagick
Run Code Online (Sandbox Code Playgroud)

您可以exiftool在终端中做类似的事情- 请注意,它exiftoolImageMagick更小且更易于维护,因为它“只是”一个(非常有能力的)单个 Perl 脚本:

从 EXIF IFD1 信息中提取图像分辨率:

exiftool -IFD1:XResolution -IFD1:YResolution image.jpg
Run Code Online (Sandbox Code Playgroud)

从图像中提取名称中包含“分辨率”一词的所有标签|:

exiftool '-*resolution*' image.jpg
Run Code Online (Sandbox Code Playgroud)

将 X/Y 分辨率(密度)设置为image.jpg

exiftool -xresolution=300 -yresolution=300 image.jpg
Run Code Online (Sandbox Code Playgroud)

这是我在回答开头的意思的一个小示范......

使用ImageMagick创建一个没有 dpi 信息的 1024x768 图像:

convert -size 1024x768 xc:black image.jpg
Run Code Online (Sandbox Code Playgroud)

现在检查一下:

identify -verbose image.jpg

Image: image.jpg
  Format: JPEG (Joint Photographic Experts Group JFIF format)
  Mime type: image/jpeg
  Class: PseudoClass
  Geometry: 1024x768+0+0
  Units: Undefined
  Colorspace: Gray
  Type: Bilevel
  ...
  ...
Run Code Online (Sandbox Code Playgroud)

现在更改 dpi 并设置 dpi 单位并再次检查:

mogrify -set density 300 -units pixelsperinch image.jpg   # Change dpi

identify -verbose image.jpg                               # Examine

Image: image.jpg
  Format: JPEG (Joint Photographic Experts Group JFIF format)
  Mime type: image/jpeg
  Class: PseudoClass
  Geometry: 1024x768+0+0            <--- Number of pixels is unchanged
  Resolution: 300x300               <---
  Print size: 3.41333x2.56          <--- Print size is now known
  Units: PixelsPerInch              <---
  Colorspace: Gray
  Type: Bilevel
  ...
  ...
Run Code Online (Sandbox Code Playgroud)

现在您可以看到,我们突然知道打印出来的照片有多大,并且像素数没有改变。

  • `在你打印图像之前,它与世界和他的狗完全无关`-你在开玩笑吗?尝试在 PC 显示器和电影屏幕前观看相同的图像。希望你能找到不同之处。DPI 在_每个_图形设备中都很重要,包括屏幕。 (5认同)