TShopping

 找回密碼
 註冊
搜索
查看: 149|回復: 0

[教學] Python cv2邊緣偵測

[複製鏈接]
發表於 2021-3-23 21:47:31 | 顯示全部樓層 |閱讀模式
 
Push to Facebook Push to Plurk  
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 邊緣偵測

Python cv2 邊緣偵測

  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)
複製代碼


結果圖

Python cv2 邊緣偵測

Python cv2 邊緣偵測



原圖

Python cv2 邊緣偵測

Python cv2 邊緣偵測

  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)
複製代碼


結果圖

Python cv2 邊緣偵測

Python cv2 邊緣偵測


 

臉書網友討論
您需要登錄後才可以回帖 登錄 | 註冊 |

本版積分規則



Archiver|手機版|小黑屋|免責聲明|TShopping

GMT+8, 2021-4-18 09:34 , Processed in 0.053942 second(s), 24 queries .

本論壇言論純屬發表者個人意見,與 TShopping綜合論壇 立場無關 如有意見侵犯了您的權益 請寫信聯絡我們。

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表