2022年6月9日 星期四

s1081408 作業7

  

  • 1. 開發環境: 

      • Windows 10 
      • OpenCV 4.5.5 
      • Visual Studio 2022
      • 語言:C++ 

 

 

  • 2. 作業說明: 

      • Morphological Image Processing:  
        • 利用數學型態學影像處理運算(erode(), dilate()等函式),計算出所附圖像中圍棋個數。
        • 程式不一定可以算出正確棋子數量,越接近正確答案越好!
  •  

  • 3. 程式功能: 

      • 讀取圖片:輸入圖片路徑後,若路徑存在,使用imread(IMG_PATH, IMREAD_GRAYSCALE)把圖片以灰階形式讀進來。若路徑不存在的話則提示使用者,並結束程式。 
      • 原圖片尺寸太大,先調整圖片大小:resize()。
      • 將灰階圖片經過高斯、二值化的處理,得到黑白圖像:GaussianBlur()、threshold()
      • 先使用侵蝕的方式去除二值化後雜訊,之後再將圖片輪廓恢復回來:erode()、dilate()。
      • 用HoughCircles()偵測出圖片中的圓形圍棋位置,並用vector把偵測到的圓形的圓心x/y座標、圓半徑記錄下來。重要參數:
        1. minDist表示兩個圓之間圓心的最小距離,如果檢測到的兩個圓心之間距離小於該值,則會認為會是同一個圓心。
        2. param2越小,就越可以檢測到更多根本不存在的圓,而它越大的話,能通過檢測的圓就更加接近完美的圓形。
        3. minRadius要偵測的圓半徑的最小值。
        4. maxRadius要偵測的圓半徑的最大值。
      • 將上個步驟儲存的圓形資訊傳進circle()函式,在圖上標示出偵測到的圓形。
      • 按任意鍵關閉視窗,回到步驟1再次輸入路徑。


  • 4. 執行結果:

圖一預測數量
圖一圍棋標示


圖二預測數量
圖二圍棋標示


圖三預測數量
圖三圍棋標示

沒有留言:

張貼留言