import cv2
import numpy as np
img = cv2.imread("hd.jpeg", 0)
img = cv2.gaussianblur(img,(3,3),0)
edges = cv2.canny(img, 50, 150, aperturesize = 3)
lines = cv2.houghlines(edges,1,np.pi/10,118) #這裡對最後乙個引數使用了經驗型的值
result = img.copy()
for m in range(lines.ndim):
for line in lines[m]:
rho = line[0] #第乙個元素是距離rho
theta= line[1] #第二個元素是角度theta
# print rho
# print theta
if (theta < (np.pi/4. )) or (theta > (3.*np.pi/4.0)): #垂直直線
#該直線與第一行的交點
pt1 = (int(rho/np.cos(theta)),0)
#該直線與最後一行的焦點
pt2 = (int((rho-result.shape[0]*np.sin(theta))/np.cos(theta)),result.shape[0])
#繪製一條白線
cv2.line( result, pt1, pt2, (255))
else: #水平直線
# 該直線與第一列的交點
pt1 = (0,int(rho/np.sin(theta)))
#該直線與最後一列的交點
pt2 = (result.shape[1], int((rho-result.shape[1]*np.cos(theta))/np.sin(theta)))
#繪製一條直線
Opencv 霍夫變換 直線
注意 下面的解釋屬於bradski和kaehler 的 學習opencv 一書。hough line變換是用於檢測直線的變換。為了應用變換,首先需要邊緣檢測預處理。如你所知,影象空間中的一行可以用兩個變數表示。例如 在笛卡爾座標系中 引數 m,b 在極座標系中 引數 r,對於hough 變換,我們將...
Hough變換提取直線 Matlab實現
用hough變換提取直線 在對圖形進行直線檢測之前,需要對圖形進行邊緣檢測 二值化處理,用拉普拉斯演算法或canny提取邊緣 hough變換思想 1 在 的極值範圍內對其分別進行 m,n 等分,設乙個二維陣列的下標與 i j 的取值 對應 2 對影象上的所有邊緣點作 hough 變換,求每個點在 j...
OpenCV學習筆記(三) 直線提取
首先熟悉opencv中的直線檢測的函式。我在數字影象處理課程中學習到的直線檢測的方法是hough變換,因此此處也使用hough相關的函式進行直線檢測與提取。1 houghlines 函式原型 2 houghlinesp 函式原型 void cv houghlinesp inputarray imag...