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:
留言
張貼留言