【问题标题】:openCV equivalent of a PIL resize ANTIALIAS?openCV 相当于 PIL 调整大小 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) 

所以我的问题是,是否需要一个额外的参数,或者这会减少尺寸以减少质量损失吗?

【问题讨论】:

    标签: python python-2.7 opencv python-imaging-library image-resizing


    【解决方案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 导入中不存在。
    猜你喜欢
    • 2012-12-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-02
    • 2017-04-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-13
    • 2018-11-10
    相关资源
    最近更新 更多