1. 作業說明:
撰寫一個程式,利用數學型態學影像處理運算(erode(), dilate()等函式),計算出所附圖像(共三張)每張圖像中圍棋個數。
2. 開發環境:
windows11
opencv-python 4.5.5.64
3. 流程:
*需要將圖片與程式碼放在同一個資料夾中*
我使用for迴圈用一樣的流程處理三張圖片。(三張圖片的路徑存在一個list中)
將圖片讀入後,先將圖片進行二值化。(我用的是我自己寫的函式,只進行了簡單的二值化)
在二值化的同時將棋子的顏色變成白色,背景變成黑色。因為opencv的erotion是由白色區塊來判定的。
接著使用erotion盡可能地將棋子與棋子分開,再使用dilation增加被侵蝕後的圖像體積。
圖片1的erotion和dilation
然後使用findcounters得到函式計算的輪廓數量,就是棋子的數量了。
我原本kernel是用125*125,但這樣雖然有一張圖的數量是完全正確,其他張都卻都差的有點多。所以最後我用111*111,這樣雖然每張圖都有誤差,但是都只誤差1而已。
沒有留言:
張貼留言