我想创建一个仿射变换,使得在变换发生后图像仍然以蓝点为中心,顶部红点距图像顶部45%,底部红点距离25%这里的图像底部是一个例子:
要进行仿射变换,我设置源点和目标点,如下所示:
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>
我的问题是我做错了什么?我是否选择了错误的点来定义仿射变换?
编辑:在尝试了@Miki的建议之后,这就是结果