2019年6月6日 星期四

s1051531的作業5

一、作業要求:

撰寫一個程式,利用數學型態學影像處理運算,計算出所附圖像(共三張)每張圖像中 圍棋個數。

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


離開程式

沒有留言:

張貼留言