我目前正在尝试在对阈值应用阈值后在样本映射中查找晶粒的轮廓。在图片中,您可以看到,如果这些晶粒彼此非常靠近,则它们将被检测为单个轮廓。因此,我试图在最薄的部分分割轮廓。但是我的主要问题是我不知道如何使用numpy数组来实际分割轮廓,以便结果是两个数组。 (由于声誉原因,我无法包含图片,我是新用户)
我试图创建一个函数,该函数可以传递cv2.findContours()找到的轮廓,以使用某些条件将其分割。我将彼此之间的距离进行比较,并通过两个因素对其进行过滤。基本上,我得到了应该发生分裂的两个点的两个索引(a和b)。现在,我希望将这些点之间的位置移动到新轮廓(数组?)并从旧轮廓中删除这些点。然后将两者都添加到新列表或数组中,结果等于cv2.findContour()。我想我的问题主要是不了解numpy类型(数组)的概念。
@RequestMapping(value = "/users", method = RequestMethod.POST, headers = "Accept=application/json")
public void Add(@RequestBody List<user> users) throws Exception {
// Here I am iterating users and writing one by one to different message topic based on the type
// if any error in the given user while writing to message topic I am storing that user in other DB
}
将结果传递到我的绘图函数(可以完美地绘制cv2.findContours()找到的轮廓)会导致错误:
错误:(-215:声明失败)函数'cv :: drawContours'中的npoints> 0
答案 0 :(得分:0)
我已经修改了我的代码,现在看来可以运行了:
if len(dists) > 0:
dists = sorted(dists, key=lambda a: a[0])
a = dists[0][1]
b = dists[0][2]
old = contour.copy()
new = old[a:b]
old1 = old[0:a]
old2 = old[b:len(old)]
old = np.concatenate((old1,old2))
contours_new.append(old)
contours_new.append(new)
else:
contours_new.append(contour)
我摆脱了对我不起作用的numpy.delete函数。