TShopping

 找回密碼
 註冊
搜索
查看: 806|回復: 0
打印 上一主題 下一主題

[教學] Python cv2邊緣偵測

[複製鏈接]
跳轉到指定樓層
1#
發表於 2021-3-23 21:47:31 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
 
Push to Facebook
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)
複製代碼


結果圖


 

臉書網友討論
*滑块验证:
您需要登錄後才可以回帖 登錄 | 註冊 |

本版積分規則



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

GMT+8, 2024-4-24 21:20 , Processed in 0.062600 second(s), 25 queries .

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

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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