之前的隨筆中使用了C++來編寫演算法底層邏輯,這次我們直接使用OpenCV和Numpy和Scipy所提供的方法直接調用實現 1 import cv2 2 import numpy 3 from scipy import ndimage 4 5 kernel_3 = numpy.array([ 6 [- ...
之前的隨筆中使用了C++來編寫演算法底層邏輯,這次我們直接使用OpenCV和Numpy和Scipy所提供的方法直接調用實現
1 import cv2 2 import numpy 3 from scipy import ndimage 4 5 kernel_3 = numpy.array([ 6 [-1, -1, -1], 7 [-1, 8, -1], 8 [-1, -1, -1] 9 ]) 10 11 kernel_5 = numpy.array([ 12 [-1, -1, -1, -1, -1], 13 [-1, 1, 2, 1, -1], 14 [-1, 2, 4, 2, -1], 15 [-1, 1, 2, 1, -1], 16 [-1, -1, -1, -1, -1] 17 ]) 18 19 img = cv2.imread('Pic.webp', 0) 20 k3 = ndimage.convolve(img, kernel_3) 21 k5 = ndimage.convolve(img, kernel_5) 22 blurred = cv2.GaussianBlur(img, (17, 17), 0) 23 hpf = img - blurred 24 25 cv2.imshow('IMG', img) 26 cv2.imshow('K3', k3) 27 cv2.imshow('hpf', hpf) 28 29 cv2.waitKey() 30 cv2.destroyAllWindows()
隨機在網上搜索灰度圖然後Down下來保存名字為Pic即可。
19 Line中的 cv2.imread()中的第二個參數很重要,有三種模式,RGB,Gray scale,NoChange,具體請自行搜索。我們需要選擇Gray scale即數字0就可以表示了。
至於convolve方法其實可以自己實現,具體參照之前的【圖像處理】隨筆。
23 Line中的減法作用,bulrred變數被經過高斯低通濾波處理的img賦值,而numpy數組是可以直接進行加減法運算的,此時得到的 hpf 變數就是原圖銳化的結果。