dpi 只是 JPEG/TIFF/PNG 标头中的一个数字。在您打印图像之前,它与这个世界和他的狗完全无关,然后它决定了打印的大小,图像的尺寸(以像素为单位)。
在图像处理期间,它是无关紧要的。唯一感兴趣的是您拥有的像素数。这是图像质量或信息内容的最终决定因素 - 无论您想如何描述它。
我不相信你可以用 OpenCV 来设置它。您当然可以在终端中像这样使用 ImageMagick 进行设置:
mogrify -set density 300 *.png # v6 ImageMagick
magick mogrify -set density 300 *.png # v7 ImageMagick
您可以通过以下方式进行检查:
identify -format "Density: %x x %y" SomeImage.jpg # v6 ImageMagick
magick identify -format ... as above # v7 ImageMagick
您可以在终端中使用 exiftool 执行类似的操作 - 请注意,exiftool 比 ImageMagick 更小且更易于维护,因为它“只是” (非常有能力)单个 Perl 脚本:
从 EXIF IFD1 信息中提取图像分辨率:
exiftool -IFD1:XResolution -IFD1:YResolution image.jpg
从图像中提取名称中包含“分辨率”一词的所有标签|:
exiftool '-*resolution*' image.jpg
在image.jpg 上设置 X/Y 分辨率(密度):
exiftool -xresolution=300 -yresolution=300 image.jpg
这是我在回答开头的意思的一个小演示......
使用 ImageMagick 创建没有 dpi 信息的 1024x768 图像:
convert -size 1024x768 xc:black image.jpg
现在检查一下:
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
...
...
现在更改 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
...
...
现在您可以看到,我们突然知道打印出来有多大,而且像素数没有改变。