當前位置:編程學習大全網 - 源碼下載 - openCV進階之二:自動校準掃描圖像生成鳥瞰圖

openCV進階之二:自動校準掃描圖像生成鳥瞰圖

上壹節介紹了如何openCV的透視轉換方法的應用,並構建了壹個基於給定四角點轉換鳥瞰圖的方法函數,這壹節將繼續這個運用,通過查找邊緣的方法實現自動轉換的功能。

實現步驟實際上很簡單,只需要三步:

第壹步:查找文檔的邊緣

第二步:通過邊緣查找文檔輪廓並找到四個角點的坐標

第三步:使用透視轉換函數完成圖像轉換

下面的代碼基於openCV/python的版本:openCV2.4/3+, python2.7/3+

上壹章節我們完成了transform.py模塊的構建,我們將在接下來的涉及圖像四角點處理的問題中均會使用到。打開妳的python編輯器,創建壹個新的文檔,並命名為scan.py。

接下來就是第壹步:邊緣查找:

測試壹下效果:

shell

雖然背景有點不幹凈但是文檔的邊緣還是很明顯的,接下來我們想辦法查找文檔的邊緣並生成輪廓。

第二步:尋找輪廓:

事實上,在構建文檔掃描器時,有壹個非常重要的前提:掃描儀只是在壹張紙上掃描。壹張紙被假定為長方形,矩形有四條邊。因此,我們可以創建壹個簡單的方法來幫助我們構建文檔掃描器。我們假設圖像中最大的輪廓恰好有四個點,這就是我們要掃描的那張紙。這也是壹個相當安全的假設——當然,也可以人為的給定文檔輪廓。

運行壹下代碼測試效果:shell中輸入

正如您所看到的,我們已經成功地利用邊緣檢測圖像找到了文檔的輪廓(outline),我的收據周圍的綠色矩形顯示了輪廓(outline)。最後,讓我們進入步驟3,這將是用到four_point_transform函數。

第三步:轉換圖像:構建移動文檔掃描器的最後壹步是取代表文檔大綱的四個點,並應用透視圖轉換來獲得自頂向下的圖像“鳥瞰圖”。

我們將把兩個參數傳遞給four_point_transform:第壹個參數是我們從磁盤加載的原始圖像(不是調整大小的圖像),第二個參數是表示文檔的輪廓線,乘以調整大小的比例。

妳可能會想,為什麽要乘以調整後的比例? 我們乘以調整後的比例,因為我們進行了邊緣檢測,在調整後的高度=500像素的圖像上發現了輪廓。但是,我們希望對原始圖像進行掃描,而不是對調整大小的圖像進行掃描,因此我們將輪廓點乘以調整大小的比例。

為了獲得圖像的黑白感覺,我們將扭曲後的圖像轉換為灰度圖像,並應用自適應閾值。

好的,我們來運行壹下效果:

shell

好了,到目前為止,掃描圖像到文檔提取鳥瞰圖的過程實現完成了。遺留問題:

實際上這個程序還有不少地方需要妳的改進,比如要求轉換的文檔本身是規則的四邊形,拍攝時盡量放在對比度明顯的桌面背景,這樣做的目的是為了避免邊緣查找時出現多於四邊的情況,多於四邊的邊緣後續輪廓查找會出現問題。也就是找不到合適的四邊輪廓來匹配。

解決方案:可以采用人工標註四個角點的方式來提取輪廓更為可靠。因為在實際應用場景往往是不規則的文檔。下壹節我們來探討這個方案實現過程。

  • 上一篇:海水富營養化的原因
  • 下一篇:c端口監視器源代碼
  • copyright 2024編程學習大全網