如何通过使用python和opencv在图像中划分接触的cicle

时间:2019-02-21 09:05:16

标签: python opencv

我要处理几张图像。我想分割图像中的所有圆圈。 A image from CT scan

这是我的代码。

导入cv2 将numpy导入为np

def detect_circle(image):
    dst = cv2.GaussianBlur(image, (3,3), 0)#降低噪声
    climage = cv2.cvtColor(dst, cv2.COLOR_BGR2GRAY)
    circles = cv2.HoughCircles(climage, cv2.HOUGH_GRADIENT, 1, 50, param1 = 35, param2 = 27,
                              minRadius = 25, maxRadius = 50)
    circles = np.uint16(np.around(circles))

for i in circles[0, 1:]:
    cv2.circle(image, (i[0], i[1]), i[2], (0, 0, 255), 2)#画圆
    cv2.circle(image, (i[0], i[1]), 2, (0, 0, 255), 1)#画圆心
    #cv2.imwrite('detect_circle-1.tif', image)

cv2.namedWindow('detect_circle', 0)
cv2.resizeWindow('detect_circle', 800, 800)
cv2.imshow('detect_circle', image)  

img = cv2.imread('C:\THU\python\learn\outputtif\\1.tif')
detect_circle(img)

cv2.waitKey()
cv2.destroyAllWindows()

然后,我得到了这样的图像。结果足够完美。 enter image description here

我还尝试使用腐蚀和扩张法将它们分成单个。但这是行不通的。我的问题是如何将这些接触的圆分成单个,以便能够检测到它们。

0 个答案:

没有答案