为什么OpenCV cv2.resize给出的答案与MATLAB imresize不同?

为什么OpenCV cv2.resize给出的答案与MATLAB imresize不同?,matlab,opencv,image-processing,numpy,image-resizing,Matlab,Opencv,Image Processing,Numpy,Image Resizing,我正在将一个MATLAB代码转换成python,并尝试使用OpenCV函数cv2.resize缩小图像的大小,但我从MATLAB的输出中得到了不同的结果 为了确保我的代码在调整大小之前没有出错,我在两个函数上都使用了一个小示例,并比较了输出 我首先在Python和MATLAB中创建了以下数组并对其进行了上采样: Python-NumPy和OpenCV MATLAB 然后我把答案重新调整到原来的2x2大小 蟒蛇: MATLAB: 它们显然不一样,当数字越大,答案就越不一样 如有任何解释或参考资料,

我正在将一个MATLAB代码转换成python,并尝试使用OpenCV函数
cv2.resize
缩小图像的大小,但我从MATLAB的输出中得到了不同的结果

为了确保我的代码在调整大小之前没有出错,我在两个函数上都使用了一个小示例,并比较了输出

我首先在Python和MATLAB中创建了以下数组并对其进行了上采样:

Python-NumPy和OpenCV MATLAB 然后我把答案重新调整到原来的2x2大小

蟒蛇: MATLAB: 它们显然不一样,当数字越大,答案就越不一样

如有任何解释或参考资料,将不胜感激。

MATLAB的:


这让我过去在尝试时绊倒了。

+1谢谢!这正是我想要的。我已经使用这个函数很多年了,从来没有想过要关闭抗锯齿功能。你知道有没有一种方法可以在python中进行这种下采样,而不是实现反走样?@mxy恐怕没有。也许在调整大小/重采样之前,您可以先使用高斯滤波器或其他低通滤波器进行卷积。
    x = cv2.resize(np.array([[1.,2],[3,4]]),(4,4), interpolation=cv2.INTER_LINEAR)
    print x

    [[ 1.    1.25  1.75  2.  ]
     [ 1.5   1.75  2.25  2.5 ]
     [ 2.5   2.75  3.25  3.5 ]
     [ 3.    3.25  3.75  4.  ]]
    x = imresize([1,2;3,4],[4,4],'bilinear')

    ans =

    1.0000    1.2500    1.7500    2.0000
    1.5000    1.7500    2.2500    2.5000
    2.5000    2.7500    3.2500    3.5000
    3.0000    3.2500    3.7500    4.0000
    cv2.resize(x,(2,2), interpolation=cv2.INTER_LINEAR)

    ans = 

     [[ 1.375,  2.125],
      [ 2.875,  3.625]]
    imresize(x,[2,2],'bilinear')

    ans =

      1.5625    2.1875
      2.8125    3.4375
>> imresize(x,[2,2],'bilinear')
ans =
    1.5625    2.1875
    2.8125    3.4375
>> imresize(x,[2,2],'bilinear','AntiAliasing',false)
ans =
    1.3750    2.1250
    2.8750    3.6250