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()
相关推荐
invicinble3 小时前
这里对java的知识体系做一个全域的介绍
java·开发语言·python
AI人工智能+3 小时前
基于深度学习的银行回单识别技术,成为连接物理票据与数字财务系统的桥梁
深度学习·计算机视觉·ocr·银行回单识别
m0_674294644 小时前
如何编写SQL存储过程性能对比_记录执行时间评估优化效果
jvm·数据库·python
运气好好的4 小时前
怎样开启phpMyAdmin的操作审计日志_记录每条执行的SQL
jvm·数据库·python
2401_871492855 小时前
Layui如何修改Layui默认的UI主题颜色(换肤功能实现)
jvm·数据库·python
南子北游5 小时前
Python学习(基础语法1)
开发语言·python·学习
步辞6 小时前
Redis如何利用LFU算法优化缓存命中率
jvm·数据库·python
forEverPlume6 小时前
golang如何实现日志按级别过滤_golang日志按级别过滤实现教程
jvm·数据库·python
m0_624578597 小时前
MySQL主从复制支持跨版本吗_不同版本间同步的注意事项
jvm·数据库·python
yuanpan8 小时前
Python Pygame 入门教程:从零学会创建窗口、绘图和游戏交互
python·游戏·pygame