2022年6月2日 星期四

s1081542 作業7

 

作業說明:

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

使用環境/語言:

  • Windows10
  • Visual Studio 2019
  • Opencv-4.3.0
  • C++

實作方法:

  1. 輸入圖片路徑後,會檢查是否可讀取到圖片內容,若不行,則重新輸入圖片路徑。
  2. 由於 erode及dilate,只能用於經過二值化運算的灰階圖片。因此先將圖片轉成灰階圖,並利用threshold對圖片進行二值化運算
  3. 經過二值化運算的灰階圖片代入erode,如此能讓圖片去噪、細化影像和消除毛刺。
  4. 由於 erode 會讓圖片的輪廓變細,因此需要利用 dilate 讓圖片的輪廓恢復正常大小,圖片會較清晰。
  5. 利用 HoughCircles,偵測圖中的圓形個數,圓形個數即為圍棋個數
  6. 根據圓形的圓心座標及圓半徑畫圓,利用circle函式畫圓。
  7. 使用迴圈,將偵測到的所有圓形畫在圖片上。
  8. 印完圖片後,回到第一點的流程
  9. 第一點的流程輸入0,則終止程式。

執行方式/畫面:

IMG_5702.JPG:(原圖:24顆圍棋,偵測:23顆圍棋)

image image

IMG_5703.JPG:(原圖:31顆圍棋,偵測:30顆圍棋)

image image

IMG_5704.JPG:(原圖:31顆圍棋,偵測:31顆圍棋)

image image

參考資料:

影片:



沒有留言:

張貼留言