openCV 相当于 PIL 调整大小 ANTIALIAS?
Posted
技术标签:
【中文标题】openCV 相当于 PIL 调整大小 ANTIALIAS?【英文标题】:openCV equivalent of a PIL resize ANTIALIAS? 【发布时间】:2016-02-08 05:54:01 【问题描述】:在 PIL 中,我所见过的最高质量的调整大小似乎是:
img = img.resize((n1, n2), Image.ANTIALIAS)
对于openCV,这似乎是这样做的方法:
small = cv2.resize(image, (0,0), fx=0.5, fy=0.5)
所以我的问题是,是否需要一个额外的参数,或者这会减少尺寸以减少质量损失吗?
【问题讨论】:
【参考方案1】:来自documentation:
要缩小图像,通常使用 CV_INTER_AREA 插值效果最佳,而要放大图像,通常使用 CV_INTER_CUBIC(慢)或 CV_INTER_LINEAR(更快但看起来还可以)效果最佳。
调整大小的默认值为CV_INTER_LINEAR
。将插值更改为CV_INTER_AREA
,因为您希望缩小图像:
small = cv2.resize(image, (0,0), fx=0.5, fy=0.5, interpolation = cv2.INTER_AREA)
您可能希望比较两种插值的结果,以直观地验证您获得了最佳质量。
【讨论】:
我实际上打算同时缩小和扩大图像。它必须是一个精确的大小,如果不是,我需要向上或向下调整它的大小。所以我得到的是 CV_INTER_LINEAR 更快,标准适合缩小规模,但 CV_INTER_AREA 应该用于扩大规模?我需要最高质量。你知道 INTER_AREA 慢了多少吗? @alfredox INTER_AREA 在谈论质量时最适合缩小图像。 INTER_CUBIC 用于使图像更大。 INTER_LINEAR 似乎是最快的。我想你可以做一些性能测试来比较每个插值——我自己没有这样做。重新调整大小可能会很昂贵(性能方面)。 我遇到了一个错误,CV_INTER_AREA 显然在 cv2 中不存在? 我不使用 Python,但我相信代码是cv2.INTER_AREA
而不是 CV_INTER_AREA
。你在尝试吗?
我的错,我应该说我确实尝试过,它在 cv2 导入中不存在。以上是关于openCV 相当于 PIL 调整大小 ANTIALIAS?的主要内容,如果未能解决你的问题,请参考以下文章
调整 GIF 动画、pil/imagemagick、python 的大小
为啥用Python的openCV读取图片与PIL读取的图片像素值会不一样?