相关疑难解决方法(0)

python opencv - blob检测或圆检测

我在检测圆形区域时遇到问题.我尝试使用opencv中的HoughCircles函数.然而,即使图像非常相似,功能的参数也必须不同以便检测圆圈.

我尝试的另一种方法是迭代每个像素并检查当前像素是否为白色.如果是这种情况,则检查区域中是否存在blob对象(距blob中心的距离小于阈值).如果有,请将像素附加到blob,如果没有,则创建一个新blob.这也无法正常工作.

有谁知道如何使这项工作(90%检测)?我附上了一个示例图像和另一个我标记了圆圈的图像.谢谢!

例

箭头的例子

更新: 感谢您的帮助到目前为止!这是我获取轮廓并按区域过滤它们的代码:

im = cv2.imread('extract_blue.jpg')
imgray = cv2.cvtColor(im, cv2.COLOR_BGR2GRAY)
im_gauss = cv2.GaussianBlur(imgray, (5, 5), 0)
ret, thresh = cv2.threshold(im_gauss, 127, 255, 0)
# get contours
contours, hierarchy = cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)

contours_area = []
# calculate area and filter into new array
for con in contours:
    area = cv2.contourArea(con)
    if 1000 < area < 10000:
        contours_area.append(con)
Run Code Online (Sandbox Code Playgroud)

这非常整洁.我把它们画在图像上: contours_filtered_area

这是我通过圆度过滤的部分,它直接在我按区域过滤的代码下面:

contours_cirles = []

# check if contour is of circular shape
for con in contours_area:
    perimeter = cv2.arcLength(con, True) …
Run Code Online (Sandbox Code Playgroud)

python geometry opencv blobs

18
推荐指数
2
解决办法
2万
查看次数

标签 统计

blobs ×1

geometry ×1

opencv ×1

python ×1