warpaffine 旋转有一部分消失_OpenCV warpAffine的天坑

问:

在OpenCV中,通过resize将(w1, h1)尺寸的图片转化为(w2, h2)尺寸的图片,和通过warpAffine配合

矩阵变换进行仿射变换,插值模型都使用双线性(不考虑OpenCV LINEAR实现中特殊处理的几种情况),那么得到的结果是否相同呢?

答:

不相同,可以试试

[[255, 200, 0, 50],

[200, 255, 50, 0],

[ 0, 50, 255, 200],

[ 50, 0, 200, 255]]

这个4 * 4的小图片,将它缩小一半:

>>> d = numpy.array([[255, 200, 0, 50],

... [200, 255, 50, 0],

... [ 0, 50, 255, 200],

... [ 50, 0, 200, 255]], numpy.uint8)

>>> cv2.resize(d, (2,2))

array([[228, 25],

[ 25, 228]], dtype=uint8)

>>> cv2.warpAffine(d, numpy.matrix([[0.5,0,0],[0,0.5,0]]), (2,2))

array([[255, 0],

[ 0, 255]], dtype=uint8)

显然resize的结果正确(进行了插值),而warp的结果不正确(只保留了奇数行列)。这是为什么呢?大家可以先思考下,过段时间再公布答案。

你可能感兴趣的:(warpaffine,旋转有一部分消失)