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,產生素描自畫像圖。


四、執行結果



留言

這個網誌中的熱門文章

rzwang Homework #1

s1093350 Homework #2

s1061637 作業6