一、作業要求:
撰寫一個程式,利用數學型態學影像處理運算,計算出所附圖像(共三張)每張圖像中
圍棋個數。
a. 請在部落格呈現經由數學型態學影像處理運算後的圖像,同時要呈現你程式輸出棋子數量的螢幕截圖。
b. 程式不一定可以算出正確棋子數量,越接近正確答案越好!
二、使用環境:
- windows10
- Visual Studio 2017
- python 3.6
- opencv-python 4.1.0
三、特殊程式片段:
- threshold(): 將圖片二值化(呈現黑白)
- getStructuringElement(): 設置侵蝕或膨脹的模板
- erode(): 侵蝕
- dilate(): 膨脹
- Canny(): 找邊緣
- findContours(): 尋找輪廓
- drawContours(): 將找到的輪廓畫在原圖上做比較
四、執行結果:
先選擇要計算哪張圖,然後先對圖進行二值化,再進行一次的侵蝕,去除棋子裡一些太小的反光點,之後藉由多次膨脹棋子裡較大的反光點,讓棋子剩下的黑色部分分開。
然後藉由Canny()將邊緣找出來,用findContours()將邊緣歸類為輪廓後計算數量,最後用drawContours()在原圖上畫出輪廓來比較找到哪些輪廓。
圖1、 侵蝕及膨脹後的圖(左);輪廓圖(右)
正確: 24,計算出25個,誤差 +1
圖2、侵蝕及膨脹後的圖(左);輪廓圖(右)
正確: 31,計算出29個,誤差 -2
圖3、侵蝕及膨脹後的圖(左);輪廓圖(右)
正確: 31,計算出31個,誤差 0
離開程式
沒有留言:
張貼留言