C++ 如何将图片放大到300 DPI?

C++ 如何将图片放大到300 DPI?,c++,image-processing,computer-vision,tesseract,C++,Image Processing,Computer Vision,Tesseract,该问题的公认答案建议您: 将输入图像放大/缩小到300 DPI 我该怎么做。。。我的印象是DPI用于显示器,而不是图像格式。OCR软件通常设计为使用“正常”字体大小。从图像的角度来看,这意味着它将寻找大约30到100像素高度范围内的字母。分辨率高得多的图像会产生太大的字母,OCR软件无法有效处理。同样,较低分辨率的图像也无法提供足够的像素供软件识别字母。当您将以像素为单位的图像与具有图片大小的物理设备相关联时,DPI是有意义的。在OCR的情况下,它通常意味着扫描的分辨率,即每英寸扫描将获得多少像

该问题的公认答案建议您:

  • 将输入图像放大/缩小到300 DPI

  • 我该怎么做。。。我的印象是DPI用于显示器,而不是图像格式。

    OCR软件通常设计为使用“正常”字体大小。从图像的角度来看,这意味着它将寻找大约30到100像素高度范围内的字母。分辨率高得多的图像会产生太大的字母,OCR软件无法有效处理。同样,较低分辨率的图像也无法提供足够的像素供软件识别字母。

    当您将以像素为单位的图像与具有图片大小的物理设备相关联时,DPI是有意义的。在OCR的情况下,它通常意味着扫描的分辨率,即每英寸扫描将获得多少像素。12点字体意味着每行打印12/72英寸,大写字符可能会填充其中的80%;因此,当以300 DPI扫描时,它大约有40像素高

    许多图像格式中都记录了DPI。如果扫描图像,这应该是扫描仪的精确设置。如果它来自数码相机,它总是说72 DPI,这是EXIF规范规定的默认值;这是因为相机无法知道图像的原始大小。使用成像程序创建图像时,您可能有机会将DPI设置为任意值。这便于您指定如何使用最终图像,并且与图像中包含的细节无关

    前面的问题询问了调整图像大小的详细信息:
    我认为这里更准确的术语是。您需要足够高的像素分辨率来支持精确的OCR。字体大小(例如英寸)通常以长度为单位,而不是以像素为单位。由于72点=1英寸,我们需要300/72像素每点的分辨率为300 dpi(“像素每英寸”)。这意味着一个典型的12点字体的高度(或者更准确地说,在单间距文本中,基线到基线的距离)为50像素

    理想情况下,源文档应以给定字体大小的适当分辨率进行扫描,以便图像中的字体高约50像素。如果分辨率太高/太低,可以使用图形程序(例如)轻松地对图像重新采样。您还可以通过图形库以编程方式执行此操作,例如,图形库具有多种编程语言的接口。

    我该如何执行此操作……我的印象是dpi用于显示器,而不是图像格式。”

    DPI代表每英寸点数。它与监视器有什么关系?我们有一个由三个RGB亚像素组成的像素。DPI越高,您在该空间中填充的细节就越多

    DPI是一个有用的显示器和打印测量,但没有什么有用的。。。事实上,对于图像格式本身来说没有什么

    在某些格式中标记DPI的原因是指示设备以该分辨率显示,但据我所知,几乎所有设备都忽略该指示,并尽最大努力优化特定输出的图像

    您可以将图像格式中的72 dpi更改为1 dpi或6000 dpi,在显示器上不会产生任何影响。“放大/缩小到300 dpi”毫无意义。重采样也不会改变DPI。在Photoshop中尝试,在更改DPI时取消选中“重采样”,您将看不到任何差异。它不会变大或变小


    DPI对于图像格式来说是完全没有意义的,依我看。

    如果你的目标是OCR,DPI是指原始扫描文档中每英寸图像中的点数。如果您的dpi太低,则信息将永远消失,即使双三次插值也不会是一项出色的恢复工作。如果你的dpi太高,很容易扔掉一些碎片


    完成工作;我是netpbm/pbmplus工具集的忠实粉丝;开始的工具是<代码> pnMyStult,但是如果你有一个位图,你想考虑相关的工具,比如<代码> PBMReule。

    最重要的是,我正在抓取字体大小为12的VeldANA,并用它命中或命中。另一个图像处理完成了,比如把它变成一个二值图像。更新:哇,把图像大小增加了2,这样就把它放到了目标范围内。似乎工作得很好!仍然在玩。将低分辨率图像重新采样到更高分辨率有什么意义?