首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何利用圆方程实现圆检测?

如何利用圆方程实现圆检测?
EN

Stack Overflow用户
提问于 2017-05-10 05:43:44
回答 1查看 646关注 0票数 2

我试图用方程实现圆hough变换r = sqrt((x-h)^2-(y-k)^2)从图像中检测圆。

我申请了一系列的步骤,比如高斯模糊,精明。在此之后,如果半径和边界点是可用的,我就不知道如何实现上述方程。实现后,我将得到累加器空间,其中包含半径和中心的检测圆。我想用opencv的HoughCircle函数来实现。有什么能帮到我的吗?花了这么多时间。

代码语言:javascript
复制
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)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-11 04:36:59

但是,在此代码中仍然需要对累加器空间进行快速处理。

代码语言:javascript
复制
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] += 1
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43884385

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档