如何用opencv增加dpi?

时间:2018-05-24 07:56:35

标签: python opencv

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

  1. 我现在不知道我的图像dpi
  2. 我不知道如何增加图像的dpi
  3. 我在谷歌搜索,几乎每个答案建议使用<script type="text/javascript">(function(){window.CommonSuiteNavData = {Scripts: ["/_layouts/15/mylinks.js?rev=HjKTiRHbpPJBEU6OeYZGyw%3D%3DTAG0"],...

    resize

    cv2.resize()
    

    image = cv2.imread("source.png") resized_image = cv2.resize(image, (100, 50)) #I need to change it to 300 DPI 只是为了改变图像的大小,但毕竟没有增加图像中的dpi,因为我尝试使用它,当我在photoshop中检查时,dpi没有改变

    显示请帮助我解决2个问题

    如何用opencv做到这一点?

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

    oya我用python

3 个答案:

答案 0 :(得分:2)

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 更小,更容易维护,因为它是&#34;只是&#34; 一个(非常有能力的)单个Perl脚本:

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

exiftool -IFD1:XResolution -IFD1:YResolution image.jpg

提取包含单词&#34;分辨率&#34;的所有标签。从图像|:

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
  ...
  ...

现在你可以看到我们突然知道打印件有多大,而且像素数没有变化。

答案 1 :(得分:2)

即使这是一篇过时的文章,我也想说Tesseract已经过测试,发现当字符高度在30像素左右时效果更好。请检查以下链接:

答案 2 :(得分:0)

DPI是图形设备的继承属性 - 显示器,扫描仪,相机等。例如 - 假设我们正在扫描图像,我们希望获得更高质量的图像 - 因此我们在扫描仪选项中设置更高的DPI值。如果没有更好的DPI选项 - 所以我们需要购买更好的扫描仪,支持更多的扫描分辨率。有些设备/方法能够实现100 000 DPI