检测共享edg的矩形

2024-04-23 07:58:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个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


Tags: 图像ptimgforclosenpcv2容器
1条回答
网友
1楼 · 发布于 2024-04-23 07:58:01

您可以使用此方法:

1)-使用Hough线或LSD检测线
2)-创建一些规则来合并这些行
3)-计算交点。 4)-推导矩形角。你知道吗

或者使用一些基于旋转/缩放不变边缘的模板匹配。你知道吗

相关问题 更多 >