点::(x y)是已知的。
我在三角形区域内有点。
我知道初始位置和最终位置的顶点坐标。我知道三角形区域内所有点的初始坐标。
现在,我想找出三角形区域内所有点的最终坐标。
下图显示了初始位置和最终位置中的点。
谁能告诉我如何在OpenCV和C++平台中执行此操作?
我也可以对任意形状的轮廓进行加工吗?
最佳答案
我正在使用3D坐标来考虑
[u v]
翻译整体转换矩阵将具有以下形式
[ a b u]
M = [ c d v]
[ 0 0 1]
A=[x1 y1 1]
和B=[x2 y2 1]
和C=[x3 y3 1]
A' = [x1' y1' 1]
,B'=[x2' y2' 1]
和C'=[x3' y3' 1]
转换后的位置进行比较。标价:做数学运算以获得变换矩阵M
,以便A' = M A
和B' = M B
以及C' = M C
x -> M x
应用于每个输入点编辑:使用Translation in transformation matrix将翻译合并到矩阵
M
中编辑:似乎“做你的数学”对你来说还不清楚。
您将意识到这三个方程可以写成:
[x1' x2' x3'] [x1 x2 x3]
[y1' y2' y3'] = M [y1 y2 y3]
[1 1 1 ] [1 1 1 ]
要么
X' = M X
要么
M = X . X'^-1
是的,OpenCV在矩阵上具有函数
inv()
。