試試乙個簡單的文件掃瞄器 機器視覺

2022-03-18 05:02:28 字數 1411 閱讀 2677

用途:可以用在智慧型手機上的名片掃瞄歸檔或文件掃瞄儲存。

我們的目的是自動獲取小票的位置,然後自動整理成正視效果然後整理存起來,需要的效果可能如下

為了全部自動化於是我們有下邊一些可能實現問題的想法和步驟:

1.首先讀入灰度化。

2.為了尋找小票的位置我們可能想從邊緣這塊出發去尋找小票,為了避免噪音的影響,我們對進行高斯模糊然後再進行canny算查詢邊緣

可以看出,其實邊緣檢測效果不太好,具體教通用的引數自己可以去調,這裡只做乙個示例,當然邊緣效果越好,效果就越準確。

3.做完邊緣檢測之後,接下要找到小票的話,需要尋找小票輪廓,利用邊緣資訊尋找輪廓於是有

可以看出,找到的輪廓多到嚇死你,一般像我們這種應用都有個假設,假設我們是用來掃書籍或名片之類的,理論上他們是的焦點,相對來說輪廓都是比較大的。

4.得到原始眾多輪廓之後我們就要想辦法得到我們想要的輪廓了,我們對這些檢測出來的輪廓的面積進行排序取頭5-6個比較大的輪廓,然後計算這4-6個中每個輪廓近似的多邊形,得到各自的頂點,然後判斷哪些輪廓的頂點數量為4的就是我們想要的輪廓了,於是有下圖;

5.這樣子我們就得到小票的4個頂點的位置了,然後我們的目標是正視效果 ,於是新的對應頂點位置 是新的四個頂點,這樣子通過這四個對應點對,我們就可以算出乙個投影變換矩陣,然後對原圖進行變換就可能得到我們想要的結果

然後 其實這種方法要做到非常魯棒性,目前這些方法都無法達到要求的,其實可以產生四個頂點,允許使用者互動,對準小票或文件相對於的四個頂點 然後進行第5步的變化相對於如下

好久沒寫部落格了,先這樣了、

構建乙個快速的掃瞄器

最近工作需要做大規模的掃瞄,需要自己根據指紋寫乙個掃瞄引擎,其中碰到了無數的坑,最後勉強算的過去,特地寫寫部落格總結一下各種坑和思路。一開始自然而然想到的就是這個掃瞄模型,利用python中的同步佇列結合多執行緒發包 收包 寫操作。大致模型如下 class worker thread def ini...

python實現乙個簡單的c段掃瞄器

import threading import time import subprocess def ping ip subprocess.popen 建立子程序 ping c 2 指定ping的次數 count為2 指定bash c是因為linux中可能有很多shell,bash c 是為了保證命...

用python實現乙個埠掃瞄器

最簡單的埠掃瞄工具使用tcp連線掃瞄的方式,即利用作業系統原生的網路功能,且通常作為syn掃瞄的替代選項。nmap將這種模式稱為連線掃瞄,因為使用了類似unix系統的connect 命令。如果該埠是開放的,作業系統就能完成tcp三次握手,然後埠掃瞄工具會立即關閉剛建立的該連線,防止拒絕服務攻擊。us...