使用openCV,我如何改变分辨率,而不是图像的大小



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

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

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

如果我保持原来的大小,x和y代表什么,我怎么得到一个分辨率,比如72dpi ?

让我直接解释一下:当你将图像加载到内存中时,你有一个很好的近似,具有给定行数和颜色的数字矩阵。从dpi的定义来看,dpi是指可以放置在一英寸直线上的单个点的数量,你会缺少"英寸"。在记忆里。如果矩阵存储在内存中,你如何定义dpi ?仅仅根据记忆来谈论它是没有意义的。所以这就是在opencv中(也许在任何其他处理库中),分辨率和大小的概念是相等的。

也许你想实现一些"人工"的东西。dpi降低?某物"看起来像"以较低的dpi打印图像?在这种情况下,为什么不尝试反复调整相同图像的大小来达到这个结果呢?

并且cv::resize()函数通过给定的目标大小(参数dsize)或比例因子(fxfy)来改变大小。

最新更新