Python | OpenCV 透視變換與圖片校正
📚 前言
在前一篇我們學會了 特徵點偵測與匹配。
這一篇要介紹 透視變換 (Perspective Transform) 與 圖片校正 (Image Rectification),這是圖片幾何處理的重要技巧,能將傾斜或變形的圖片校正回正常視角,常用於文件掃描、場景校正、投影轉換等應用。
🎨 範例圖片

圖:範例圖片 document.png — 傾斜的文件
圖:範例圖片 board.png — 傾斜的投影幕
🔎 透視變換原理
原理說明
- 透視變換是一種 射影變換 (Projective Transform),能將圖片中的四邊形區域映射到另一個矩形區域。
- 常用於校正傾斜的文件、投影幕或場景。
- 核心函式是
cv2.getPerspectiveTransform()與cv2.warpPerspective()。
參數說明
1 | cv2.getPerspectiveTransform(srcPoints, dstPoints) |
- srcPoints:原始圖片中的四個點座標。
- dstPoints:目標圖片中的四個點座標。
- M:透視變換矩陣 (3x3)。
- dsize:輸出圖片大小 (寬, 高)。
💻 範例程式 — 文件校正
1 | import cv2 |

圖:程式碼執行結果 — 原始傾斜文件與校正後的矩形文件
💻 範例程式 — 場景校正
1 | import cv2 |

圖:程式碼執行結果 — 投影幕校正
📊 文件校正 vs 場景校正
| 類型 | 目的 | 角點來源 | 重點 | 常見應用 |
|---|---|---|---|---|
| 文件校正 | 把拍攝時傾斜的文件校正成正矩形,方便閱讀或 OCR 辨識 | 文件四角 (票據、身分證、書頁) | 保持文字比例正確,避免字體拉伸 | 掃描文件、票據辨識、證件 OCR |
| 場景校正 | 把場景中的矩形物件校正成正視角,方便顯示或分析 | 投影幕、看板、地板方格的四角 | 幾何對齊即可,比例不一定要符合真實物件 | 投影幕校正、AR 虛擬投影、場景重建 |
🧾 小結
- 文件校正:強調「文字比例正確」,目的是讓文件可讀性和 OCR 辨識效果更好。
- 場景校正:強調「幾何對齊」,目的是讓場景顯示或分析更方便。
- 技術上都是用
cv2.getPerspectiveTransform()+cv2.warpPerspective(),差別在 角點選取方式 和 輸出大小設定。
⚠️ 注意事項
- 四個角點座標必須正確,否則校正結果會失真。
- 建議搭配 特徵點偵測 或 邊緣檢測 自動取得角點。
- 輸出大小需根據目標矩形設定,否則可能造成拉伸。
📊 應用場景
- 文件掃描校正:將拍攝的傾斜文件校正成正矩形,方便 OCR 辨識。
- 投影幕校正:修正投影畫面傾斜,讓顯示內容保持比例。
- 場景重建:將相機拍攝的斜角場景轉換成俯視視角。
- AR 應用:將虛擬物件正確投影到真實場景中。
🎯 結語
本篇我們學會了 透視變換與圖片校正,能將傾斜或變形的圖片轉換成正常視角。
這些技巧在 文件掃描、投影校正、場景重建、AR 等領域非常常見。
📖 如在學習過程中遇到疑問,或是想了解更多相關主題,建議回顧一下 Python | OpenCV 系列導讀,掌握完整的章節目錄,方便快速找到你需要的內容。
