請撰寫一個程式,利用數學型態學影像處理運算,計算出所附圖像(共三張)每張圖像中 圍棋個數。
a. 請在部落格呈現經由數學型態學影像處理運算後的圖像,同時要呈現你程式輸出棋 子數量的螢幕截圖。
b. 程式不一定可以算出正確棋子數量,越接近正確答案越好!
環境與使用套件版本
- Windows 10
- Python 3.7.1
- opencv-python 4.0.0.21
- PyQt5 5.12
實作方式
- 將圖片轉為灰階並使用 GaussianBlur 將圖片模糊處理去除雜訊
- 將圖片做二值化處理
- 使用 erode 侵蝕圖片
- 使用 findContours 取得圖片輪廓數
使用方法
Step2. 點擊選擇圖片,讀入想要的圖片
Step3. 點擊計算數量,計算出的數值顯示在右下方 (可自訂 erode 的 kernel 大小)
Step4. 點擊查看圖片,可以顯示輪廓圖片
實作過程
1. 將題目所給的三張圖片餵入程式2. 翻覆測試 erode 函數之 kernel 大小與輪廓的關係
3. 並將計算出來的輪廓數量記錄下來,結果如下表
紅色字為 3 種 kernel 中最接近正解 |
- IMG_5702.JPG 在不同 kernel 對應的輪廓圖與數量
在這張圖片中,棋子重疊的部分多,在使用較大的 kernel 下,會取得比較準確的數值 |
- IMG_5703.JPG 在不同 kernel 對應的輪廓圖與數量
而在這張圖片中,棋子反光與重疊的部分多,在使用較大的 kernel 下, 會使得圖片侵蝕過多,取得較不準確的數值 |
- IMG_5704.JPG 在不同 kernel 對應的輪廓圖與數量
第三張圖片中,棋子重疊與反光的部分少, 使用 200~300 間的 kernel 大小均能取得精準的數值 |
沒有留言:
張貼留言