【问题标题】:How to detect these circles?如何检测这些圆圈?
【发布时间】:2021-03-08 17:53:56
【问题描述】:

我想检测包含数字的圆圈。我尝试了圆形检测(霍夫方法),但结果非常糟糕。所以我尝试了模板匹配并得到了更好的结果。但是,仍然有很多圈子错过了。 这是我的代码

import cv2 
import numpy as np
from matplotlib import pyplot as plt
from PIL import Image 
from numpy import asarray

img = cv2.imread(r'D:\RealPython\facedetectionOpenCV\dataset\dataset_qxgtuu.png')
img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) 
template = cv2.imread(r'D:\RealPython\facedetectionOpenCV\tam.PNG',0)
w, h = template.shape[::-1]

numpydata = asarray(template)
mean= np.mean(numpydata, axis=(0,1))

res = cv2.matchTemplate(img_gray,template,cv2.TM_CCOEFF_NORMED)
threshold = 0.6
loc = np.where( res >= threshold)

for pt in zip(*loc[::-1]):      
    cv2.rectangle(img, pt, (pt[0] + w, pt[1] + h), (255,0,0), 2)

cv2.imshow("Detected Circle", img) 
cv2.waitKey(0)
cv2.destroyAllWindows()
cv2.imwrite('res.png',img)

这是我得到的:https://ibb.co/Rcg2gPk

【问题讨论】:

    标签: python opencv computer-vision


    【解决方案1】:

    模板匹配通常是寻找对象的最坏情况。它可以提供一些原始成本价值,但不能提供整个解决方案

    如果圆圈始终具有相同的强度。您可以使用 2 阈值函数仅寻找这种颜色,并精明地寻找边缘。

    那么可能还有其他噪声,所以用轮廓函数测量2个阈值图像的梯度,这样只有轮廓距离正确的圆才是正确的匹配。

    另一种方法是直接轮廓形状匹配,如此处所述OpenCV shape matching between two similar shapeshttps://www.youtube.com/watch?v=jvHT2eER7lU&ab_channel=JackyLe

    编辑

    获取功能。你可以试试这里的方法

    https://docs.opencv.org/master/d7/d4d/tutorial_py_thresholding.html

    结合多个Simple Thresholding找到圆特征。

    获得 2 路阈值功能后 您展示了能够获得多个圆形图案和一些其他具有相似颜色的图案。使用轮廓法求轮廓

    获得轮廓二值特征后

    你可以用代码试试这里列出的这个方法

    https://docs.opencv.org/master/d5/d45/tutorial_py_contours_more_functions.html

    找到匹配的圆形。并排除误报。

    【讨论】:

    • 我对 openCV 有点陌生..你能指导我到一个关于如何做你建议的来源吗?非常感谢
    • 已添加,请查看我提供的链接
    【解决方案2】:

    我建议重新考虑这个问题。如果您尝试检测正好为 WxH 像素的灰色矩形轮廓怎么办? H只是比数字大。宽度是你可以在圆圈中定义的最大宽度吗?

    忽略它们是圆形,但数字周围有一个固定大小的灰色矩形。

    【讨论】:

    • 我对 openCV 有点陌生.. 你能指导我到一个关于如何做你建议的来源吗?非常感谢
    • 抱歉 OpenCV 不是我的专长。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-20
    • 2018-08-26
    • 2018-10-14
    • 1970-01-01
    • 2013-08-03
    • 1970-01-01
    相关资源
    最近更新 更多