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()
相关推荐
花酒锄作田12 小时前
FastAPI 使用 session 认证
python·fastapi
lsswear12 小时前
Python 并发 线程
开发语言·python
Ivanqhz13 小时前
MLIR OpBuilder
开发语言·python·mlir
Tp_jh13 小时前
AMD 395本地部署Qwen3.8-Flash-Next实测,端侧AGI时代也要来了
图像处理·人工智能·opencv·语言模型·自然语言处理·千问
威联通安全存储15 小时前
TS-h2287XU-RP 在家电制造总装与质检数据场景的部署
python·制造
泡泡鱼(敲代码中)15 小时前
Python 字符串 str 完整学习笔记
python·学习
troy12816 小时前
Python 基础语法(八):Web 后端开发、数据分析与可视化、网络爬虫、人工智能 / 大模型应用
前端·python·数据分析
我不会起名字32216 小时前
一天一道算法题(34):回溯法的经典例题(子集)
java·数据结构·python·算法·golang·深度优先·力扣
民乐团扒谱机16 小时前
【一文吃透】图像灰度非线性拉伸:对数、Gamma、S型曲线与直方图均衡化公式详解与避坑
人工智能·计算机视觉
ThornArmor17 小时前
重铸1996|肉体渲染:关节的裂缝:分段模型积木拼装与未成熟的 RSP 矩阵骨骼动画形变
c语言·汇编·c++·python·硬件架构·游戏机