2022年6月7日 星期二

s1081526 作業7

 1. 作業說明:

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


2. 開發環境:

    windows11

    opencv-python 4.5.5.64


3. 流程:

    *需要將圖片與程式碼放在同一個資料夾中*

    我使用for迴圈用一樣的流程處理三張圖片。(三張圖片的路徑存在一個list中)

    將圖片讀入後,先將圖片進行二值化。(我用的是我自己寫的函式,只進行了簡單的二值化)

    在二值化的同時將棋子的顏色變成白色,背景變成黑色。因為opencv的erotion是由白色區塊來判定的。

    接著使用erotion盡可能地將棋子與棋子分開,再使用dilation增加被侵蝕後的圖像體積。

圖片1的erotion和dilation

圖片2的erotion和dilation

圖片3的erotion和dilation

    然後使用findcounters得到函式計算的輪廓數量,就是棋子的數量了。

    我原本kernel是用125*125,但這樣雖然有一張圖的數量是完全正確,其他張都卻都差的有點多。所以最後我用111*111,這樣雖然每張圖都有誤差,但是都只誤差1而已。



沒有留言:

張貼留言