【问题标题】:Using openCV, how do I change the resolution and not the size of the image?使用openCV,如何更改分辨率而不是图像的大小?
【发布时间】:2014-08-16 05:54:44
【问题描述】:

这可能是一个基本问题,但我是 openCV 的新手,我发现文档很差。我想我想使用调整大小功能来获得与原始大小相同但分辨率较低的新图像。

我发现的所有文档都好像分辨率和大小是一样的,我完全不知道这些参数的含义。不同的来源似乎显示了与我在标题中看到的不同版本的调整大小:

CV_EXPORTS_W void resize( InputArray src, OutputArray dst,
                      Size dsize, double fx=0, double fy=0,
                      int interpolation=INTER_LINEAR );

如果我保持 dsize 与原始大小相同,x 和 y 代表什么?我如何获得 72 dpi 的分辨率?

【问题讨论】:

  • 图像/数据结构本身的分辨率和大小是相同的。仅用于打印/显示大小可能会有所不同。如果您想访问一个像素(这就是图像处理中所做的),如果您使用以英寸和 dpi 为单位的图像大小,您将如何访问像素位置?

标签: ios opencv


【解决方案1】:

让我直接解释一下:当您将图像加载到内存中时,您有一个很好的近似值,即具有给定行数和列数的数字矩阵。从 dpi 的定义来看,即可以在一英寸的一行中放置的单个点的数量,您的内存中缺少“英寸”。如果矩阵存储在内存中,您将如何定义 dpi?只凭记忆去谈是没有意义的。所以这就是在 opencv(也许在任何其他处理库中)你的分辨率和大小概念相等的方式。

也许您想实现“人为”降低 dpi 的目的?以较低 dpi 打印“看起来像”图像的东西?在这种情况下,您为什么不尝试反复调整同一图像的大小以实现此结果。

cv::resize() 函数确实会根据给定的目标大小(参数dsize)或比例因子(fxfy)改变大小。

【讨论】:

    猜你喜欢
    • 2013-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多