opencv-灰度(gray)-高斯濾波(GaussianBlur)-邊緣檢測(Canny)
灰度
cv2.cvtColor(img,p1)
是顏色空間轉換函數,img是需要轉換的圖片,p2是轉換成格式。
cv2.COLOR_BGR2RGB 將BGR格式轉換成RGB格式
cv2.COLOR_BGR2GRAY將BGR格式轉換成圖像
邊緣檢測
edge = cv2.Canny(image, threshold1, threshold2[, edges[, apertureSize[, L2gradient ]]])
第一個參數是需要處理的原圖像,該圖像必須為單通道的灰度圖;
第二個參數是閾值1;
第三個參數是閾值2。
第二個參數是閾值1;
第三個參數是閾值2。
高斯濾波
cv2.GaussianBlur( SRC,ksize,sigmaX [,DST [,sigmaY [,borderType ] ] ] )
Src –輸入圖像;圖像可以具有任何數量的信道,其獨立地處理的,但深度應CV_8U,CV_16U,CV_16S,CV_32F或CV_64F。
Dst –輸出與圖像大小和類型相同的圖像src。
Ksize –高斯核大小。 Ksize.width 並且 ksize.height 可以有所不同,但它們都必須是正數和奇數。或者,它們可以為零,然後從計算 sigma*。
SigmaX – X方向上的高斯核標準偏差。
SigmaY – Y方向上的高斯核標準差;如果 sigmaY 為零,則將其設置為等於 sigmaX;如果兩個西格瑪均為零,則分別根據ksize.width 和 進行計算 ksize.height(getGaussianKernel()有關詳細信息,請參見 link);完全控制的結果,無論這一切的語義未來可能的修改,建議指定所有的ksize,sigmaX和sigmaY。
BorderType –像素外推方法
import cv2
img = cv2.imread(r"C:\Users\blair\Pictures\saveImg\lena.jpg")
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
blur = cv2.GaussianBlur(gray, (7, 7), 2)
canny = cv2.Canny(img, 200, 200)
cv2.imshow("canny", canny)
cv2.imshow("blur", blur)
cv2.imshow("gray", gray)
while True:
if cv2.waitKey(1) & 0xFF == ord('q'):
break

留言
張貼留言