s1091530 作業2

 

1. 開發環境

windows11

Python:3.8.13

opencv-python:4.7.0.72

numpy:1.24.2


2. 功能

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

一開始先利用灰階模式讀取一張圖片,

之後使用cv2.Sobel()分別計算圖片 x方向和y方向的梯度,會得到sobelx和sobely。

再來會用到cv2.convertScaleAbs()來做傳換,分別帶入sobelx和sobely,會得到abs_sobelx和abs_sobely,

因為使用cv2.Sobel()會產生出負值,而我們只關心邊緣的存在及方向,不需關心梯度的正負,因此透過取絕對值可以保留邊緣的訊息。

還有因為OpenCV是使用浮點數型別,而在顯示圖像時,需要用到的則是整數型別,這樣才能顯示出來,所以我們必須轉換,並且將像素值縮放到0~255的範圍內。

最後,使用cv2.addWeighted(),將x方向和y方向的梯度合併,就能得到邊緣偵測的結果。


(b)設計一個類似素描線條的自畫像圖案:

一開始先使用cv2.bitwise_not()將黑白交換,形成素描的效果。之後再透過膨脹的方式將白色的部分擴大,能夠弱化粗線條,會先建立kernel(作為膨脹操作的結構元素),再將它加入到cv2.dilate()裡面,使它膨脹來增強連接、填充凹痕。


結果:





留言

這個網誌中的熱門文章

rzwang Homework #1

s1093350 Homework #2

s1091537 Homework #1