s1081414 作業2

 主題: 線條自畫像 (二值化與邊緣偵測 Image Thresholding and Edge Detection)

線條自畫像 (二值化與邊緣偵測 Image Thresholding and Edge Detection) 撰寫一個程式,以灰階模式讀取一張圖像 imread(path, IMREAD_GRAYSCALE) 

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

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


開發環境:

  •  Windows 10
  • Visual Studio Code
  • python 3.9.7
  • OpenCV 4.7.0

說明:

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

sobelx = cv2.Sobel(img, cv2.CV_64F, 1, 0, ksize=3)
sobely = cv2.Sobel(img, cv2.CV_64F, 0, 1, ksize=3)

abs_sobelx = cv2.convertScaleAbs(sobelx)
abs_sobely = cv2.convertScaleAbs(sobely)

sobel_combined = cv2.addWeighted(abs_sobelx, 0.5, abs_sobely, 0.5, 0)

Sobel運算子檢測圖像邊緣的過程,計算x方向和y方向的梯度值,我們可以檢測圖像中水平和垂直方向上的邊緣。最後,將兩者組合起來



(b)設計一個類似素描線條的自畫像圖案
invert_img = cv2.bitwise_not(sobel_combined)
ret, binary_img = cv2.threshold(invert_img, 175, 255, cv2.THRESH_BINARY)

這兩行的程式碼是將邊緣檢測後得到的圖像轉換成二值化圖像,第一行程式先將黑白顏色進行反轉,第二行程式進行二值化,這裡的閾值設為 175,代表灰度值大於 175 的像素會被設為白色(255),而灰度值小於等於 175 的像素會被設為黑色(0)




留言

這個網誌中的熱門文章

rzwang Homework #1

s1093350 Homework #2

s1091537 Homework #1