我目前正在对图像进行圆检测看起来像这样,但是一些墨滴合并并形成一些不规则的形状(原始图像中的红色标记).我在opencv中使用houghcircle函数来检测圆圈.对于那些不规则的形状,该功能只能将它们检测为几个小圆圈,但我真的希望程序将不规则形状视为一个完整的大形状并得到一个像我在输出图像中绘制的大圆圈.
我的代码将检测所有圆圈并获得它们的直径.
这是我的代码:
def circles(filename, p1, p2, minR, maxR):
# print(filename)
img = cv2.imread(filename, 0)
img = img[0:1000, 0:1360]
l = len(img)
w = len(img[1])
cimg = cv2.cvtColor(img,cv2.COLOR_GRAY2BGR)
circles = cv2.HoughCircles(img, cv2.HOUGH_GRADIENT, 1, 25,
param1 = int(p1) ,param2 = int(p2), minRadius = int(minR), maxRadius = int(maxR))
diameter = open(filename[:-4] + "_diamater.txt", "w")
diameter.write("Diameters(um)\n")
for i in circles[0,:]:
diameter.write(str(i[2] * 1.29 * 2) + "\n")
count = 0
d = []
area = []
for i in circles[0,:]:
cv2.circle(cimg,(i[0],i[1]),i[2],(0,255,0),2)
cv2.circle(cimg,(i[0],i[1]),2,(0,0,255),3)
count …Run Code Online (Sandbox Code Playgroud) 我正在尝试计算此图像中的墨滴数量以及这些墨滴所覆盖区域的覆盖率.我试图将这个图像转换为黑白图像,但这些图像的中心颜色看起来与背景太相似了.所以我只得到第二张图片.有没有办法解决这个问题或任何更好的想法?非常感谢.

