2017-10-07 99 views
-1

我将在Raspberry Pi上做一个项目,通过投影机显示图像。图像是一个矩形,它的宽度只有它的两倍。由于我通过投影仪进行显示,这意味着距离项目最远的一侧最终会比较近的一侧窄,所以我需要扩大图像的这一侧。倾斜图像的一侧

有人能指出我该如何实施的正确方向吗?我甚至不知道正确的术语是什么,并且研究我需要做的数学。

+0

你的意思是说你想用命令行工具来扭曲你的图像,或者你想用你写的代码来处理它?以各种聪明的方式扭曲图像的好工具是'convert',它是ImageMagick软件包的一部分。 –

+0

我会通过代码来处理它。 – Gargoyle

+0

我在投影面上有4个矩形的长方形,所以我的想法是一个初始校准图像只画一个矩形,然后调整图像,直到每个角落触及这4个点,然后我就知道我的确切'抵消“,我不得不考虑。 – Gargoyle

回答

1

我相信你所要求的称之为“梯形校正”。许多视频投影机可以自动执行此操作,因此在编写一堆代码之前,请务必检查:

以下是使用ImageMagick convert实用程序执行此操作的方法。您需要知道图像的大小以开始。为了讨论,我们假设它是889 x 746.此外,让我们假设我们希望图像在底部比顶部“薄”60个像素,并且“细化”关于垂直中心对称 - 线。我们称左上像素(1,1),右上(889,1),左下(1,746)和右下(889,746)。左上角和右上角的像素保持原状;从左下方“移动”(1,746)到(61,746)。右下移动到(829,746),因为889-60是829 - 这是向左移动。

convert -distort perspective命令需要四个像素的坐标,它们的预移动和移动后的值。然后计算如何移动所有其他像素,使原始直线保持直线。因此,鉴于以上的计算值,我们需要:

convert in.png -virtual-pixel transparent -distort perspective \ 
    '1,1 1,1   \ 
    889,1 889,1  \ 
    1,746 60,746  \ 
    889,746 829,746' \ 
    out.png 

当然,间距是不是必要的:它只是显示号码怎么行了上面的计算值。

当然,您需要调整数字以适合您的图像大小以及所需的校正程度。 ImageMagick适用于Raspberry Pi,并且很容易在应用程序代码中嵌入convert的调用。

+0

非常感谢。 – Gargoyle

+0

不客气。如果我的回答很有帮助,请随意点击向上箭头,以便其他人知道;) –

+0

所以这是我看到它的两个步骤。由于我想要比原始图像更宽的顶部,我首先必须将原始图像的宽度调整为比原始图像更宽,然后使用扭曲显示我使*底部*变窄,对吗? – Gargoyle