2017-10-07 173 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