s1083513 作業2
一、作業主題: 線條自畫像 (二值化與邊緣偵測 Image Thresholding and Edge Detection)
撰寫一個程式,以灰階模式讀取一張圖像 imread(path,IMREAD_GRAYSCALE)
(a)利用 Sobel Operators 偵測並輸出邊緣成分圖
(b)設計一個類似素描線條的自畫像圖案。(想想:如何使用邊緣偵測所得到的點,結合成看似素描筆畫出的線條?)
二、開發環境
Windows
10 / Visual Studio 2022 C++ / OpenCV 4.7.0
三、實作方法
1. 用 imread(path,IMREAD_GRAYSCALE) 以灰階模式讀取圖像
2. 邊緣偵測
使用 OpenCV 的 Sobel() 方法,針對「灰階圖片」進行偵測圖像上水平(grad_x)及垂直(grad_y)光度的改變,以加權平均方式計算各點的數值來決定邊緣。在經處理過後,需要用convertScaleAbs()將其轉回原來的uint8形式,否則將只顯示灰色的視窗,沒有圖像。由於Sobel Operators是在兩個方向計算的,最後還要用or (|)圖片聯集將其組合起來。
3. 二值化
以逐位元非運算not(~)讓色調反轉 (黑變白,白變黑),並用threshold()將大於140的灰階值設為255,小於140的值設為0,產生素描自畫像圖。
四、執行結果
留言
張貼留言