我在检测圆形区域时遇到问题.我尝试使用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_cirles = []
# check if contour is of circular shape
for con in contours_area:
perimeter = cv2.arcLength(con, True) …Run Code Online (Sandbox Code Playgroud)