| 
 | 
 
 
Sobel邊緣偵測 
• 以一階導數方式進行 
• a1=cv2.Sobel(img,cv2.CV_16S,1,0)  
影像深度的計算。8U、8S、16U、16S 都是整數,差別在於正負值浮點數這部分建議可使用CV_64F, 
1,0 第一個值代表X軸。若為1 代表X軸方向的邊緣偵測。 
1,0 第二個值代表Y軸。若為1 代表Y軸方向的邊緣偵測。 
1,1 若X軸與Y軸都為1代表同時針對X軸與Y軸方向進行邊緣偵測。  
會過濾掉 只有X軸或Y軸方向的邊緣。  
laplacian偵測會偵測只有X軸、只有Y軸以及兩個都有的邊緣 
 
• 以一階導數方式進行 
• c1=cv2.Sobel(img,cv2.CV_16S,1,0,ksize=5)  
也可以做kernel的大小規劃。對雜訊過濾作法不佳,容易受到影響 
 
原圖 
Python cv2 邊緣偵測 
 
 
- import cv2
 
 - import numpy as np
 
 - img = cv2.imread('houses.jpg')
 
 - img2 = cv2.cvtColor(img,cv2.COLOR_RGB2GRAY)
 
 - cv2.imshow('img2',img2)
 
 - a1 = cv2.Sobel(img, cv2.CV_16S,1,0)
 
 - print('a1',a1)
 
 - print('--'*80)
 
 - b1 = cv2.Sobel(img, cv2.CV_16S,0,1)
 
 - print('b1',b1)
 
 - c1 = cv2.Sobel(img, cv2.CV_16S,1,1)
 
  
- x1 = cv2.convertScaleAbs(a1)
 
 - cv2.imshow('x1',x1)
 
 - x2 = cv2.convertScaleAbs(b1)
 
 - cv2.imshow('x2',x2)
 
 - x3 = cv2.convertScaleAbs(c1)
 
 - cv2.imshow('x3',x3)
 
 - cv2.waitKey(0)
 
  複製代碼 
 
結果圖 
Python cv2 邊緣偵測 
 
 
 
 
原圖 
Python cv2 邊緣偵測 
 
 
- import cv2
 
 - import numpy as np
 
 - img = cv2.imread('Flower.jpg')
 
 - img2 = cv2.cvtColor(img,cv2.COLOR_RGB2GRAY)
 
 - cv2.imshow('img2',img2)
 
 - a1 = cv2.Sobel(img, cv2.CV_16S,1,0, ksize =1)
 
 - print('a1',a1)
 
 - print('--'*80)
 
 - b1 = cv2.Sobel(img, cv2.CV_16S,1,0, ksize =3)
 
 - print('b1',b1)
 
 - c1 = cv2.Sobel(img, cv2.CV_16S,1,0, ksize =5)
 
  
- x1 = cv2.convertScaleAbs(a1)
 
 - cv2.imshow('x1',x1)
 
 - x3 = cv2.convertScaleAbs(b1)
 
 - cv2.imshow('x3',x3)
 
 - x5 = cv2.convertScaleAbs(c1)
 
 - cv2.imshow('x5',x5)
 
 - cv2.waitKey(0)
 
  複製代碼 
 
結果圖 
Python cv2 邊緣偵測 
 
 
 |   
 
 
 
 |