我有 2 个形状(图 1),需要找到它们组合的一个凸包(图 2)。更准确地说,我有兴趣获得外角(紫色圆圈图 2)。形状是分离的。我描绘的形状是一块方形的透明塑料片,侧面有两种颜色的条纹。条纹非常容易追踪(在范围内)。
我想到的一种快速而肮脏的方法是用白线连接条纹的中心,然后获得凸包。我也在考虑连接两个形状的顶点列表并获得组合的凸包,但我不确定这种方法是否会使凸包函数崩溃。
有没有更优雅的方法来解决这个问题?
请帮忙
图1
图2
问题解决了。
奇迹般有效。不同形状的连接点不会破坏凸包。
我在 GitHub 上发布了代码https://github.com/wojciechkrukar/OpenCV/blob/master/RectangleDetector/RectangleDetector.ipynb
这是结果:
这是最重要的代码块:
_ , contours,hier = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
#size of contour points
length = len(contours)
#concatinate poits form all shapes into one array
cont = np.vstack(contours[i] for i in range(length))
hull = cv2.convexHull(cont)
uni_hull = []
uni_hull.append(hull) # <- array as first element of list
cv2.drawContours(image,uni_hull,-1,255,2);
Run Code Online (Sandbox Code Playgroud)