python 轮廓 获取环形区域

目录

效果图:

代码:


效果图:

代码:

python 复制代码
import cv2
import numpy as np

# 读取图像
image = cv2.imread(r'E:\project\jijia\tools_jijia\img_tools\ground_mask.jpg', cv2.IMREAD_GRAYSCALE)
# 二值化图像
# 二值化图像
_, binary = cv2.threshold(image, 127, 255, cv2.THRESH_BINARY)

# 检测轮廓
contours, _ = cv2.findContours(binary, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

# 创建一个空白图像来绘制轮廓
contour_image = np.zeros_like(image)

# 绘制原始轮廓
cv2.drawContours(contour_image, contours, -1, (255, 255, 255), 1)

# 创建一个核,用于腐蚀操作。核的大小为 21x21,以获得20个像素的腐蚀效果
kernel = np.ones((21, 21), np.uint8)

# 对二值图像进行腐蚀操作
eroded_image = cv2.erode(binary, kernel, iterations=1)

# 再次检测腐蚀后的轮廓
eroded_contours, _ = cv2.findContours(eroded_image, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

# 创建一个空白图像来绘制腐蚀后的轮廓
eroded_contour_image = np.zeros_like(image)

# 绘制腐蚀后的轮廓
cv2.drawContours(eroded_contour_image, eroded_contours, -1, (255, 255, 255), 1)

# 将两个轮廓之间的区域涂成白色
filled_image = np.zeros_like(image)
cv2.drawContours(filled_image, contours, -1, (255, 255, 255), thickness=cv2.FILLED)
cv2.drawContours(filled_image, eroded_contours, -1, (0, 0, 0), thickness=cv2.FILLED)  # 填充内部区域为黑色

# 显示结果
cv2.imshow('Original Contours', contour_image)
cv2.imshow('Eroded Contours', eroded_contour_image)
cv2.imshow('Filled Contours', filled_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
相关推荐
思通数据25 分钟前
AI全域智能监控系统重构商业清洁管理范式——从被动响应到主动预防的监控效能革命
大数据·人工智能·目标检测·机器学习·计算机视觉·数据挖掘·ocr
大神薯条老师28 分钟前
Python零基础入门到高手8.4节: 元组与列表的区别
开发语言·爬虫·python·深度学习·机器学习·数据分析
z人间防沉迷k30 分钟前
堆(Heap)
开发语言·数据结构·笔记·python·算法
小白学大数据1 小时前
Python爬虫如何应对网站的反爬加密策略?
开发语言·爬虫·python
Eric.Lee20211 小时前
Ubuntu shell指定conda的python环境启动脚本
python·ubuntu·conda·shell
jndingxin1 小时前
OpenCV CUDA模块中矩阵操作------范数(Norm)相关函数
人工智能·opencv
芒果量化1 小时前
量化交易 - 网格交易策略实现与原理解析
python·算法·机器学习·金融
LetsonH2 小时前
Python工具链UV整合环境管理
开发语言·python·uv
MUTA️2 小时前
ultalytics代码中模型接收多层输入的处理
深度学习·算法·yolo·机器学习·计算机视觉
欣然~2 小时前
基于深度学习进行运输系统优化
python·深度学习