我要处理几张图像。我想分割图像中的所有圆圈。 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
我还尝试使用腐蚀和扩张法将它们分成单个。但这是行不通的。我的问题是如何将这些接触的圆分成单个,以便能够检测到它们。