3

在PIL最高质量从我所看到的调整似乎是:openCV相当于PIL调整ANTIALIAS?

img = img.resize((n1, n2), Image.ANTIALIAS) 

对于OpenCV的,这似乎是做到这一点的方式:

small = cv2.resize(image, (0,0), fx=0.5, fy=0.5) 

所以我的问题是,还需要一个额外的参数还是会减少最小质量损失的尺寸?

回答

3

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) 

你不妨比较两种插值的视觉验证您得到最优质的结果。

+0

我实际上会做缩小和扩大图像。它必须是一个确切的大小,如果不是,我需要调整它的大小。所以我得到的是CV_INTER_LINEAR速度更快,缩小尺寸的标准,但是CV_INTER_AREA应该用于增加尺寸?我需要最高的质量。 你知道INTER_AREA有多慢吗? – alfredox

+0

@alfredox在讨论质量时,INTER_AREA是使图像更小的最佳选择。 INTER_CUBIC使图像更大。 INTER_LINEAR似乎是最快的。我想你可以做一些性能测试来比较每个插值 - 我自己并没有这样做。调整大小可能是昂贵的(性能方面)。 – chembrad

+0

好吧,我会研究它,然后,谢谢 – alfredox