为什么getAffineTransform会产生如此奇怪的矩阵?

时间:2017-03-29 11:41:24

标签: python opencv opencv3.0 opencv3.1

我想创建一个仿射变换,使得在变换发生后图像仍然以蓝点为中心,顶部红点距图像顶部45%,底部红点距离25%这里的图像底部是一个例子:enter image description here

这就是我现在所拥有的: enter image description here

要进行仿射变换,我设置源点和目标点,如下所示:

src = [[231, 281],[283,243],[285,379]] # blue dot, top red dot, bottom red dot
dst = [[231, 281], [283, 243*0.45], [285, 379 * 0.75]]

找到转换矩阵:

M = cv2.getAffineTransform(src, dst)

但是当我打印出矩阵时,我得到了这个:

M = [[   1.           -0.            0.        ]
    [  -2.33606605    1.32038334  449.60354104]]

这显然是错误的,因为-2.336中出现的M[1,0]意味着转换矩阵在y-direction中显示,因此我的图像最终会像这样出现并不奇怪:< / p>

enter image description here

我的问题是我做错了什么?我是否选择了错误的点来定义仿射变换?

编辑:在尝试了@Miki的建议之后,这就是结果 enter image description here

0 个答案:

没有答案