OpenCV-Python 霍夫直線檢測-HoughLinesP函數參數


cv2.HoughLines()函數是在二值圖像中查找直線,cv2.HoughLinesP()函數可以查找直線段。


cv2.HoughLinesP()函數原型:

HoughLinesP(image, rho, theta, threshold, lines=None, minLineLength=None, maxLineGap=None) 

  • image: 必須是二值圖像,推薦使用canny邊緣檢測的結果圖像; 
  • rho: 線段以像素為單位的距離精度,double類型的,推薦用1.0 
  • theta: 線段以弧度為單位的角度精度,推薦用numpy.pi/180 
  • threshod: 累加平面的閾值參數,int類型,超過設定閾值才被檢測出線段,值越大,基本上意味着檢出的線段越長,檢出的線段個數越少。根據情況推薦先用100試試
  • lines:這個參數的意義未知,發現不同的lines對結果沒影響,但是不要忽略了它的存在 
  • minLineLength:線段以像素為單位的最小長度,根據應用場景設置 
  • maxLineGap:同一方向上兩條線段判定為一條線段的最大允許間隔(斷裂),超過了設定值,則把兩條線段當成一條線段,值越大,允許線段上的斷裂越大,越有可能檢出潛在的直線段

HoughLinesP()調用例子:

# coding=utf-8
import cv2
import numpy as np

img = cv2.imread('02.jpg')

gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

gaus = cv2.GaussianBlur(gray,(3,3),0)

edges = cv2.Canny(gaus, 50, 150, apertureSize=3)

minLineLength = 100
maxLineGap = 10
lines = cv2.HoughLinesP(edges, 1, np.pi / 180, 100, minLineLength, maxLineGap)

for x1, y1, x2, y2 in lines[0]:
    cv2.line(img, (x1, y1), (x2, y2), (0, 255, 0), 2)

cv2.imshow("houghline",img)
cv2.waitKey()
cv2.destroyAllWindows()


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM