我试图用方程实现圆hough变换,r = sqrt((x-h)^2-(y-k)^2)从图像中检测圆。
我申请了一系列的步骤,比如高斯模糊,精明。在此之后,如果半径和边界点是可用的,我就不知道如何实现上述方程。实现后,我将得到累加器空间,其中包含半径和中心的检测圆。我想用opencv的HoughCircle函数来实现。有什么能帮到我的吗?花了这么多时间。
import numpy as np
import cv2
import math
image = cv2.imread(imagepath)
h, w = image.shape[:2]
print h, w
grayimg = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)
bimg = cv2.bilateralFilter(grayimg, 5, 175, 175)
cann = cv2.Canny(bimg,100,200)
pixel = np.argwhere(cann == 255)
accum = []
ct = 0
for r in range(10,21):
for h in range(0,20):
for k in range(0,20):
for p in pixel:
print r,h,k,p
xpart = (h - p[0])**2
ypart = (k - p[1])**2
rhs = xpart + ypart
lhs = r * r
if(lhs == rhs):
accum.append((r,(h,k),p))
print len(accum)
cv2.waitKey(0)发布于 2017-05-11 04:36:59
但是,在此代码中仍然需要对累加器空间进行快速处理。
accum = [[[0 for r in range(10,21)]for h in range(0,30)]for k in range(0,30)]
print accum
ct = 0
for r in range(10,21):
for h in range(0,30):
for k in range(0,30):
for p in pixel:
#print r,h,k,p
xpart = (h - p[0])**2
ypart = (k - p[1])**2
rhs = xpart + ypart
lhs = r * r
if(lhs == rhs):
accum[k][h][r-10] += 1https://stackoverflow.com/questions/43884385
复制相似问题