【图像处理】——Python霍夫变换之直线检测(主要是两个函数HoughlinesHoughlinesP)
目錄
一、原理(摘自《數(shù)字圖像處理岡薩雷斯》)
2、Python函數(shù)
參數(shù)詳解
3、效果
4、實例
?
一、原理(摘自《數(shù)字圖像處理岡薩雷斯》)
即在xy平面上一條直線上的點在ab平面上是無數(shù)條直線組成的,而這些直線都會經(jīng)過一個點,這個點的a,b值就是對應xy平面直線的截距與斜率
2、Python函數(shù)
參數(shù)詳解
dst:??? 輸出圖像. 它應該是個灰度圖 (但事實上是個二值化圖)
lines:? 儲存著檢測到的直線的參數(shù)對 (x_{start}, y_{start}, x_{end}, y_{end}) 的容器,結構如[[[x1,y1,x2,y2]],[[...]]]
rho :?? 參數(shù)極徑 r 以像素值為單位的分辨率. 我們使用 1 像素.
theta:? 參數(shù)極角 theta 以弧度為單位的分辨率. 我們使用 1度 (即CV_PI/180)
threshold:??? 控制檢測出線段的條件。設置閾值: 一條直線所需最少的的曲線在一點相交,超過設定閾值才被檢測出線段,值越大,基本上意味著檢出的線段越長,檢出的線段個數(shù)越少。因為閾值越大,超過閾值的點越少,即xy平面的直線越少,但是因為閾值越大,說明檢測出在同一條直線上的點越多,即直線越長。這個參數(shù)是針對參數(shù)空間而言的,在參數(shù)空間中一條曲線就代表在xy平面上的一個點
minLinLength: 能組成一條直線的最少點的數(shù)量. 點數(shù)量不足的直線將被拋棄,其實這個參數(shù)的意義跟上一個很類似,只是這個參數(shù)是針對xy平面而言的,即當組成直線的點達到一點數(shù)量的時候才被檢測出為線段,否則過濾掉
maxLineGap:?? 控制檢測出直線長短,在同一條直線上的點,能夠被連接的最大距離,越大得到的線越長,如下圖,點在直線上,若此時距離maxlineGap小于設定的值,則連接,否則就不連接
3、效果
4、實例
# -*- coding: utf-8 -*-import cv2 import numpy as np#兩個回調(diào)函數(shù) def HoughLinesP(minLineLength):tempIamge = scr.copy()lines = cv2.HoughLinesP( edges, 1, np.pi/180,threshold=minLineLength,minLineLength=180,maxLineGap=40)for x1,y1,x2,y2 in lines[:,0]:cv2.line(tempIamge,(x1,y1),(x2,y2),(0,255,0),2)print(lines)cv2.imshow(window_name,tempIamge)#臨時變量 minLineLength = 20#全局變量 # minLINELENGTH = 20 window_name = "HoughLines Demo"#讀入圖片,模式為灰度圖,創(chuàng)建窗口 scr = cv2.imread("22.jpg")gray = cv2.cvtColor(scr,cv2.COLOR_BGR2GRAY) print(gray.shape) img = cv2.GaussianBlur(gray,(3,3),0) edges = cv2.Canny(img, 50, 150, apertureSize = 3) cv2.namedWindow(window_name)#初始化 HoughLinesP(minLineLength)if cv2.waitKey(0) == 27:cv2.destroyAllWindows()?maxLineGap = 10:
maxLineGap = 30:
maxLineGap = 40:
當maxLineGap = 40時,直線基本上被完整地檢測出來了
5、Houghlines和HoughLinesP的區(qū)別
https://www.cnblogs.com/bjxqmy/p/12331656.html
6、參考文獻
https://www.cnblogs.com/dyllove98/archive/2013/07/12/3186872.html
https://www.cnblogs.com/bjxqmy/p/12331656.html
https://blog.csdn.net/wsp_1138886114/article/details/82936218
?
總結
以上是生活随笔為你收集整理的【图像处理】——Python霍夫变换之直线检测(主要是两个函数HoughlinesHoughlinesP)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: FPGA数字电子技术复习笔记(一)ver
- 下一篇: 阿里云运行python_使用阿里云运行p