python opencv写一段代码,一个二值图内存在多个轮廓,根据轮廓面积只保留前两个轮廓
时间: 2024-04-08 19:34:30 浏览: 94
opencv 图像轮廓代码
当然可以!下面是一个使用OpenCV和Python来实现的代码示例:
```python
import cv2
# 读取二值图像
image = cv2.imread('binary_image.png', 0)
# 寻找轮廓
contours, _ = cv2.findContours(image, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
# 根据轮廓面积排序
contours = sorted(contours, key=cv2.contourArea, reverse=True)
# 保留前两个轮廓
if len(contours) > 2:
contours = contours[:2]
# 创建一个空白图像,用于绘制保留的轮廓
output = np.zeros_like(image)
# 绘制轮廓
cv2.drawContours(output, contours, -1, (255, 255, 255), thickness=cv2.FILLED)
# 显示结果
cv2.imshow('Result', output)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
请确保将代码中的`binary_image.png`替换为你的二值图像的路径。这段代码将会找到图像中的轮廓,并根据轮廓面积进行排序。然后,它将保留前两个轮廓,并在一个空白图像上绘制这些轮廓。最后,它会显示结果图像。
希望这可以帮助到你!如果有任何问题,请随时问我。
阅读全文