我有一个4个容器的深度图像,每个容器有不同数量的子隔间。我需要找到四个容器外缘的轮廓。你知道吗
我对图像进行了阈值分割,得到了容器的轮廓,但由于它们共享一条边,所以它们被分组在一起。如何跟踪每个容器的外边缘(或使用OpenCV在正确的位置自动分割轮廓)?你知道吗
depth_img = np.load(depth)
depth_thresh = cv2.threshold(depth_img, 1200, 255, cv2.THRESH_BINARY_INV)[1]
depth_close = cv2.morphologyEx(depth_thresh.astype(np.uint8), cv2.MORPH_CLOSE, np.ones((5,5),np.uint8))
depth_cnts = cv2.findContours(depth_close, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
depth_cnts = imutils.grab_contours(depth_cnts)
for c in depth_cnts:
cv2.drawContours(depth_img, [c], -1, (0, 255, 0), 2)
peri = cv2.arcLength(c, True)
approx = cv2.approxPolyDP(c, 0.01*peri, True)
for pt in approx:
cv2.circle(depth_contours, (pt[0][0],pt[0][1]),5,colors,-1)
请参见下面的图片
结果: Original depth image and results of thresholding and countour approx
期望结果:Desired Results
您可以使用此方法:
1)-使用Hough线或LSD检测线
2)-创建一些规则来合并这些行
3)-计算交点。 4)-推导矩形角。你知道吗
或者使用一些基于旋转/缩放不变边缘的模板匹配。你知道吗
相关问题 更多 >
编程相关推荐