在本章中,
圓在數學上表示為(x−
xcen
ter)
2(y−
ycen
ter)
2=r2
(x−x
cent
er)
2(y−
ycen
ter
)2=r
2,其中(xc
ente
r,yc
ente
r)(x
cent
er,
ycen
ter
)是圓的中心,r
r是圓的半徑。從等式中,我們可以看到我們有3個引數,因此我們需要3d累加器進行霍夫變換,這將非常低效。因此,opencv使用更加技巧性的方法,即使用邊緣的梯度資訊的hough梯度方法。
我們在這裡使用的函式是cv.houghcircles()。它有很多引數,這些引數在文件中有很好的解釋。因此,我們直接轉到**。
import numpy as np
import cv2 as cv
img = cv.imread(
'opencv-logo-white.png',0
)img = cv.medianblur(img,5)
cimg = cv.cvtcolor(img,cv.color_gray2bgr)
circles = cv.houghcircles(img,cv.hough_gradient,1,
20,param1=
50,param2=
30,minradius=
0,maxradius=0)
circles = np.uint16(np.around(circles)
)for i in circles[0,
:]:# 繪製外圓
cv.circle(cimg,
(i[0
],i[1]
),i[2]
,(0,
255,0)
,2)# 繪製圓心
cv.circle(cimg,
(i[0
],i[1]
),2,
(0,0
,255),
3)cv.imshow(
'detected circles'
,cimg)
cv.waitkey(0)
cv.destroyallwindows(
)
結果如下:
歡迎關注磐創部落格資源彙總站:
歡迎關注pytorch官方中文教程站:
opencv中文官方文件:
OpenCV Python 霍夫變換
霍夫變換常用來在影象中提取直線和圓等幾何形狀。如下圖 我們下面來看看如何使用霍夫變換來檢測直線。一條直線可以用數學表示式 y mx 或者 xcos y sin 表示 極座標 簡單說明一下 是從原點到直線的垂直距離,是直線的垂線與橫軸順時針方向的夾角,如下圖所示 首先建立乙個2d陣列 累加器 初始化累...
opencv python 霍夫線變換
hough line transform 霍夫變換是一種檢測任何形狀的流行技術,可以檢測形狀,即使它被破壞或扭曲一點點.一條線可以表示成y mx c或引數形式,像 xcos ysin 其中 是從原點到直線的垂直距離,角是由這條垂線和水平軸以逆時針的方向形成的 這個方向取決於你如何表示座標系統,這種表...
缺點 霍夫圓 霍夫變換
霍夫變換是一種特徵提取,被廣泛應用在影象分析 電腦視覺以及數字影像處理。霍夫變換是用來辨別找出物件中的特徵,例如 線條。他的演算法流程大致如下,給定乙個物件 要辨別的形狀的種類,演算法會在引數空間中執行投票來決定物體的形狀,而這是由累加空間 accumulator space 裡的區域性最大值來決定...