我试图找到圆形对象的质心或一个可以围绕灰度图像中圆形对象的边界的圆。
到目前为止,我所做的是使用自适应阈值将灰度图像转换为二进制图像。
灰度图像
阈值图像
到目前为止,我已经使用了霍夫变换和Findcontour。这些方法都不起作用。
对此应该采取什么方法?
答案 0 :(得分:0)
使用霍夫(Hough)变换对圈子我得到了不错的结果。这是管道:
img = cv2.imread('I7Ykpbs.jpg', 0)
img = cv2.GaussianBlur(img, (5, 5), 2, 2)
img_th = cv2.adaptiveThreshold(img, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C,
cv2.THRESH_BINARY, 9, 3)
circles = cv2.HoughCircles(img_th, cv2.HOUGH_GRADIENT, 2, minDist=30,
param1=200, param2=40, minRadius=10, maxRadius=20)
for i in range(circles.shape[1]):
c = circles[0,i,:]
center = (np.round(c[0]), np.round(c[1]))
radius = np.round(c[2])
# print(center)
# print(radius)
if np.linalg.norm(np.array([600., 600.])-center) < 500.:
cv2.circle(img, center, 3, (0,255,0), -1, 8, 0)
cv2.circle(img, center, radius, (0,0,255), 3, 8, 0)
plt.imshow(img)
plt.show()