在OpenCV中执行具有改变起源的剪切

时间:2012-11-20 13:51:43

标签: opencv matrix transformation

我想沿y轴剪切图像,但保持给定的x值在同一高度。 如果我使用剪切矩阵:

[1, 0, 0] 
[s, 1, 0] 

s =具有“warpAffine”函数的剪切因子,我确实得到了剪切图像,但它始终是0,0的原点。 我需要将我的起源放在另一个x(甚至可能是y)。

所以我认为我应该组合翻译矩阵,将图像翻译到左边,执行剪切并将图像翻译回右边,但我不确定如何组合这些矩阵,因为:

[1, 0, dx]   [1, 0, 0]     [1, 0, -dx] 
[0, 1, dy] * [s, 1, 0]  *  [0, 1, -dy] 

显然不起作用。

如何对0,0以外的选定原点执行剪切操作?

1 个答案:

答案 0 :(得分:0)

你是正确的,你应该结合这些变换。要组合它们,通过添加[0,0,1]作为第3行将它们全部转换为3x3矩阵。然后你可以乘以所有3个矩阵。当你完成底行仍然是[0,0,1]时,你可以删除它并使用生成的2x3矩阵作为组合变换。