前提條件:邊緣檢測已經完成
平面空間→極座標
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...