2

我想沿 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 以外的选定原点上执行剪切操作?

4

1 回答 1

1

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

于 2012-11-20T18:47:52.397 回答