hough 圓環變換
學習使用霍夫變換在影象中找圓形(環)。
學習函式: cv2.houghcircles()。
原理
圓形的數學表示式為
我們要使用的函式為 cv2.houghcircles()。這裡我們就直接看**吧。
import cv2
import numpy as np
img = cv2.imread('image/logo.jpeg',0)
img = cv2.medianblur(img, 5)
cimg = cv2.cvtcolor(img, cv2.color_gray2bgr)
circles = cv2.houghcircles(img, cv2.hough_gradient, 1, 20,param1=50,param2=30,minradius=0,maxradius=0)
circles = np.uint16(np.around(circles))
fori in circles[0,:]:
cv2.circle(cimg, (i
[0],i
[1]), i
[2], (0,255,0),2)
cv2.circle(cimg, (i
[0],i
[1]), 2, (0,0,255),3)
cv2.imshow('detected circles', cimg)
cv2.waitkey(0)
cv2.destroyallwindows()
結果圖:
參考:opencv官方教程中文版(for python)
opencv 霍夫變換 直線檢測
用來做直線檢測 前提條件是邊緣檢測已經完成,一般用canny來做。cv houghlinesp inputarray src,輸入影象,必須8 bit的灰度影象 outputarray lines,輸出的極座標來表示直線 double rho,生成極座標時候的畫素掃瞄步長,一般是1 double t...
OpenCV 霍夫變換直線檢測
霍夫直線檢測的基本原理在於利用點與線的對偶性。在直角座標系下,一條直線的方程可以用點斜式表示 但是這種表達方式無法表示斜率無窮大的情況 直線垂直於x軸 因此,轉化到極座標系下 可以變換為 其中,因此,在直角座標系下的乙個點 也就是說,直角座標系下的乙個點對應極座標系下的一條曲線。反過來也是成立的。霍...
OpenCV 霍夫變換圓檢測
在直角座標系下,圓的方程表示為 其中,r是圓的半徑,a,b 是圓心座標。那麼換一種表達方式 因為在直角座標系下,圓上的所有點都滿足圓的方程,所以直角座標系下的乙個圓對應到abr座標系下就是乙個點。直角座標系下經過乙個點的所有圓在abr座標系下就是一條三維曲線。那麼,直角座標系下圓上的所有點在abr座...