opencv 连续用两次findcontours函数找最外层轮廓为什么第二次找最外层轮廓的找出了全部的轮廓
时间: 2023-07-29 09:06:31 浏览: 54
这可能是因为在第一次查找轮廓时,您并没有使用正确的参数来选择要查找的轮廓类型。在OpenCV中,findContours函数的第三个参数是轮廓的检索模式,第四个参数是轮廓的近似方法。如果您在第一次调用findContours函数时使用了错误的检索模式,可能会导致第二次调用findContours函数时找到更多的轮廓。
建议您在第一次调用findContours函数时仔细检查参数,并确保使用正确的检索模式和近似方法来选择要查找的轮廓类型。如果您仍然无法解决问题,请提供更多的代码和细节,以便我更好地帮助您解决问题。
相关问题
如何得到除最外层轮廓的内部轮廓 假设内部轮廓和最外层轮廓挨的很近
要得到除最外层轮廓的内部轮廓,可以采用以下步骤:
1. 使用轮廓发现函数(如OpenCV中的findContours)得到最外层轮廓和其它所有内部轮廓。
2. 对于每个内部轮廓,使用pointPolygonTest函数(或者使用cv2.pointPolygonTest函数)判断其是否与最外层轮廓相交。
3. 如果内部轮廓与最外层轮廓相交,则说明该内部轮廓不是所需的内部轮廓,应该将其舍去。
4. 如果内部轮廓与最外层轮廓不相交,则说明该内部轮廓是所需的内部轮廓。
5. 将所有不相交的内部轮廓保存起来,即可得到除最外层轮廓的内部轮廓。
需要注意的是,如果内部轮廓和最外层轮廓非常接近,可能会出现误判的情况。在实际应用中,可以根据具体情况采取相应的措施来避免这种情况的发生。
如何得到除最外层轮廓的内部轮廓 假设内部轮廓和最外层轮廓挨的很近 用python
可以使用OpenCV库来实现。首先,你需要使用cv2.findContours函数来找到所有的轮廓。然后,您可以使用cv2.hierarchy函数来获取每个轮廓的层次结构。最外层轮廓的层次结构是[1, -1, -1, -1],在这个结构中,第一个数字表示下一个轮廓,第二个数字表示前一个轮廓,第三个数字表示子轮廓,第四个数字表示父轮廓。子轮廓和父轮廓都是指针,指向层次结构数组中的另一个元素。如果子轮廓和父轮廓都是-1,则表示这是最外层轮廓。
因此,为了得到除最外层轮廓的内部轮廓,您可以迭代所有轮廓,检查它们的层次结构。如果子轮廓不是-1,则它是一个内部轮廓,可以将其加入到内部轮廓列表中。
以下是示例代码:
``` python
import cv2
# 读取图像
img = cv2.imread('image.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 获取所有轮廓
contours, hierarchy = cv2.findContours(gray, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
# 获取内部轮廓
inner_contours = []
for i in range(len(contours)):
if hierarchy[0][i][3] != -1:
inner_contours.append(contours[i])
# 在原始图像上绘制内部轮廓
cv2.drawContours(img, inner_contours, -1, (0, 0, 255), 2)
# 显示结果
cv2.imshow('image', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
在上面的代码中,我们首先使用cv2.findContours函数获取所有轮廓和层次结构。然后,我们迭代所有轮廓,如果它有父轮廓,则将其添加到内部轮廓列表中。最后,我们在原始图像上绘制内部轮廓,并显示结果。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)