s1091524 作業2



 一、題目說明:

撰寫一個程式,以灰階模式讀取一張圖像 imread(path, IMREAD_GRAYSCALE) 

(a)利用 Sobel Operators 偵測並輸出邊緣成分圖 

(b)設計一個類似素描線條的自畫像圖案。(想想:如何使用邊緣偵測所得到的點,結合 成看似素描筆畫出的線條?)



二、開發環境:

  • Windows 10
  • Visual Studio 2022
  • C++
  • OpenCV 4.6.0

三、程式說明:

  • imread()讀檔,設定成IMREAD_GRAYSCALE直接讀成灰階圖



    (a)邊緣成分圖:

  • Sobel():執行兩次以得到x方向和y方向的梯度圖像
  • convertScaleAbs():將兩張梯度圖的每個pixel轉成正數
  • addWeighted():兩張圖各以0.5的權重相加計算獲得邊緣成分圖(用bitwise_or()也會有相似成果)



    (b)素描自畫像:

  • threshold():將邊緣成分圖做二值化,參數設定為:thresh = 80, maxval = 255, type = THRESH_BINARY_INV
  • *GaussianBlur():對原本的邊緣成分圖做模糊化以去除雜訊 。*我繳交的程式中註解掉了,因為我覺得不做模糊化比較好看,模糊化的結果如下
   
  • bitwise_not():對邊緣成分圖做反白,也可以直接用255 - src的方法達成
  • addWeighted():以反白的邊緣圖占比0.8、二值化的圖占0.2的權重比例相加以獲得結果


四、影片Demo:




留言

這個網誌中的熱門文章

rzwang Homework #1

s1093350 Homework #2

s1061637 作業6