s1091455 作業2
題目說明:
撰寫一個程式,以灰階模式讀取一張圖像 imread(path, IMREAD_GRAYSCALE)
(a)利用Sobel Operators 偵測並輸出邊緣成分圖
(b)設計一個類似素描線條的自畫像圖案。
(a)利用Sobel Operators 偵測並輸出邊緣成分圖
(b)設計一個類似素描線條的自畫像圖案。
開發環境:
environment :Ubuntu-22.04
language :C++ ( Visual Studio Code )
date :2023/03/18
package :OpenCV - 4.7.0
excute command :
g++ Assignment2.cpp `pkg-config --libs opencv4` `pkg-config --cflags opencv4` && ./a.out
實作:
以下是完成後的結果:
程式說明:
利用 Sobel function 對邊緣進行檢測,分別針對像素點上的x方向及y方向進行檢測,取得像素點上的梯度,並利用梯度的變化進行邊緣的檢測,但因為梯度值可能會有負值的情況,因此利用 convertScaleAbs function ,將所有得到的梯度值進行絕對值,避免有負值的存在進而影響結果。
對x y 方向檢測並取絕對值後,利用 addweighted function 對兩個方向的梯度圖像進行合併,得到更完整的梯度圖像,就可以獲得完整的邊緣圖像。最後再利用 bitwise_not function 進行黑白的反轉,就可以得到類似素描的圖片了。
留言
張貼留言