TShopping

標題: Python cv2邊緣偵測 [打印本頁]

作者: woff    時間: 2021-3-23 21:47
標題: Python cv2邊緣偵測
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的大小規劃。對雜訊過濾作法不佳,容易受到影響

原圖

  1. import cv2
  2. import numpy as np
  3. img = cv2.imread('houses.jpg')
  4. img2 = cv2.cvtColor(img,cv2.COLOR_RGB2GRAY)
  5. cv2.imshow('img2',img2)
  6. a1 = cv2.Sobel(img, cv2.CV_16S,1,0)
  7. print('a1',a1)
  8. print('--'*80)
  9. b1 = cv2.Sobel(img, cv2.CV_16S,0,1)
  10. print('b1',b1)
  11. c1 = cv2.Sobel(img, cv2.CV_16S,1,1)

  12. x1 = cv2.convertScaleAbs(a1)
  13. cv2.imshow('x1',x1)
  14. x2 = cv2.convertScaleAbs(b1)
  15. cv2.imshow('x2',x2)
  16. x3 = cv2.convertScaleAbs(c1)
  17. cv2.imshow('x3',x3)
  18. cv2.waitKey(0)
複製代碼


結果圖



原圖

  1. import cv2
  2. import numpy as np
  3. img = cv2.imread('Flower.jpg')
  4. img2 = cv2.cvtColor(img,cv2.COLOR_RGB2GRAY)
  5. cv2.imshow('img2',img2)
  6. a1 = cv2.Sobel(img, cv2.CV_16S,1,0, ksize =1)
  7. print('a1',a1)
  8. print('--'*80)
  9. b1 = cv2.Sobel(img, cv2.CV_16S,1,0, ksize =3)
  10. print('b1',b1)
  11. c1 = cv2.Sobel(img, cv2.CV_16S,1,0, ksize =5)

  12. x1 = cv2.convertScaleAbs(a1)
  13. cv2.imshow('x1',x1)
  14. x3 = cv2.convertScaleAbs(b1)
  15. cv2.imshow('x3',x3)
  16. x5 = cv2.convertScaleAbs(c1)
  17. cv2.imshow('x5',x5)
  18. cv2.waitKey(0)
複製代碼


結果圖






歡迎光臨 TShopping (http://www.tshopping.com.tw/) Powered by Discuz! X3.2