opencv學習筆記 21 直線檢測

2021-10-04 23:53:50 字數 2062 閱讀 9790

前提條件:邊緣檢測已經完成

平面空間→極座標

import cv2 as cv

import numpy as np

defline_detection

(image)

:"""

自己寫:param image:

:return:

"""gray = cv.cvtcolor(image, cv.color_bgr2gray)

# aperturesize 梯度視窗大小

edges = cv.canny(gray,50,

150, aperturesize=3)

# 獲取直線 引數: 邊緣 半徑步長 偏轉1° 低值

lines = cv.houghlines(edges,

1, np.pi /

180,

200)

for line in lines:

# print(type(lines)) 檢視型別

rho, theta = line[0]

a = np.cos(theta)

b = np.sin(theta)

x0 = a * rho

y0 = b * rho

x1 =

int(x0 +

1000*(

-b))

y1 =

int(y0 +

1000

* a)

x2 =

int(x0 -

1000*(

-b))

y2 =

int(y0 -

1000

* a)

# 引數:待繪圖物件 起點 終點 顏色 灰度寬度

cv.line(image,

(x1, y1)

,(x2, y2),(

0,0,

255),2

) cv.imshow(

"image-lines"

, image)

defline_detect_possible_demo

(image)

:"""

使用api直接獲取

:param image:

:return:

"""gray = cv.cvtcolor(image, cv.color_bgr2gray)

edges = cv.canny(gray,50,

150, aperturesize=3)

# minlinelength 最小的線長; maxlinegap 最大的線直接的間隔

lines = cv.houghlinesp(edges,

1, np.pi /

180,

100, minlinelength=

50, maxlinegap=10)

for line in lines:

# print(type(line)) 檢視型別

# 獲取起點和終點

opencv學習筆記(六)霍夫直線檢測和圓檢測

1.霍夫變換直線檢測和圓檢測 霍夫變換是一種從空間域到極座標域的轉換。已知二維空間的一條直線有很多表現方式,例如截距式斜率式比如 y kx b,一旦我們知道k和b,就知道了這條直線,而k和b在座標上表示的只是乙個點而已,如果直線的k相同也就是直線平行,那麼表現在kb座標域也就是條k直線。那麼問題在於...

OpenCV學習筆記(三) 直線提取

首先熟悉opencv中的直線檢測的函式。我在數字影象處理課程中學習到的直線檢測的方法是hough變換,因此此處也使用hough相關的函式進行直線檢測與提取。1 houghlines 函式原型 2 houghlinesp 函式原型 void cv houghlinesp inputarray imag...

OpenCV學習筆記(七)之Canny邊緣檢測

老規矩 妹妹鎮樓 灰度轉換 cvtcolor 計算梯度 sobel scharr 非最大訊號抑制 高低閾值輸出二值影象 t1,t2為閾值,凡是高於t2的都保留,凡是低於t1的都丟棄,從高於t2的畫素出發,凡是大於t1且相互連線的都保留。最終得到乙個輸出二值影象。推薦的高低閾值比值為t2 t1 3 1...