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)
留言
張貼留言