作業說明:
撰寫一個程式,以灰階模式讀取一張圖像 imread(path, IMREAD_GRAYSCALE) (a)利用 Sobel Operators 偵測並輸出邊緣成分圖 (b)設計一個類似素描線條的自畫像圖案。(想想:如何使用邊緣偵測所得到的點,結合 成看似素描筆畫出的線條?)
開發環境:
- Windows10
- VSCode
- python 3.10.2
- OpenCV 4.5.5
程式碼:
edge = np.zeros([rows, cols], dtype="uint8")
standard = 10
for i in range(1, rows - 1):
for j in range(1, cols - 1):
maxi = maxDifference(img[i, j], img[i, j - 1], img[i, j + 1], img[i - 1, j], img[i + 1, j])
if(maxi > standard):
edge[i, j] = maxi - 100
先宣告一個二維矩陣作為畫布。取每個pixel與周圍四個pixel最大的色差距離,如果這個距離大於一定值就依據這個值畫一個點最後就會出現上面左邊那張圖。
sketch = cv2.GaussianBlur(edge, (15, 15), 50, 50)
cv2.divide(edge, 255 - sketch, sketch, 255)
用高斯模糊和divide處理拿到的結果就可以拿到右邊那張
沒有留言:
張貼留言