python 求内轮廓

效果图

轮廓检测方法:

python 复制代码
import cv2
import numpy as np

# 创建画布
canvas_size = 500
img = np.zeros((canvas_size, canvas_size, 3), dtype=np.uint8)  # 可视化用彩色图像
binary = np.zeros((canvas_size, canvas_size), dtype=np.uint8)  # 处理用二值图像

# 定义多边形顶点(示例为五边形)
vertices = np.array([[100, 100], [400, 150], [350, 400], [150, 400], [50, 200]], dtype=np.int32)

# 绘制带厚度的白色多边形
cv2.polylines(img, [vertices], isClosed=True, color=(255, 255, 255), thickness=2)
cv2.polylines(binary, [vertices], isClosed=True, color=255, thickness=2)

# 轮廓检测
contours, hierarchy = cv2.findContours(binary, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)

# 筛选内轮廓(具有父轮廓的)
inner_contours = []
if hierarchy is not None:
    hierarchy = hierarchy[0]  # 去除外层维度
    for i, (_, _, _, parent_idx) in enumerate(hierarchy):
        if parent_idx != -1:  # 存在父轮廓的即为内轮廓
            inner_contours.append(contours[i])

# 处理找到的第一个内轮廓
if inner_contours:
    # 使用多边形近似算法
    epsilon = 0.01 * cv2.arcLength(inner_contours[0], True)
    approx = cv2.approxPolyDP(inner_contours[0], epsilon, True)

    # 提取顶点坐标
    inner_vertices = approx.reshape(-1, 2)

    # 可视化标记
    for (x, y) in inner_vertices:
        cv2.circle(img, (x, y), 2, (0, 0, 255), -1)  # 红色标记顶点
        cv2.putText(img, f"({x},{y})", (x + 10, y - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 255, 0), 1)

# 显示结果
cv2.imshow('Polygon with Inner Vertices', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

# 输出顶点坐标
if inner_contours:
    print("内轮廓顶点坐标:")
    print(inner_vertices)
else:
    print("未检测到内轮廓")
相关推荐
星越华夏1 小时前
计算机视觉:YOLOv12安装环境
人工智能·yolo·计算机视觉
wj3055853783 小时前
课程 9:模型测试记录与 Prompt 策略
linux·人工智能·python·comfyui
星寂樱易李3 小时前
iperf3 + Python-- 网络带宽、网速、网络稳定性
开发语言·网络·python
qingfeng154153 小时前
企业微信机器人开发:如何实现自动化与智能运营?
人工智能·python·机器人·自动化·企业微信
彦为君6 小时前
Agent 安全:从权限提示到沙箱隔离
python·ai·ai编程
PILIPALAPENG7 小时前
Python 语法速成指南:前端开发者视角(JS 类比版)
前端·人工智能·python
Terrence Shen8 小时前
大模型部署工具对比
人工智能·深度学习·计算机视觉
用户8356290780518 小时前
Python 操作 PowerPoint 页眉与页脚指南
后端·python
枫叶林FYL8 小时前
项目九:异步高性能爬虫与数据采集中枢 —— 基于 Crawl<sub>4</sub>AI 与 Playwright 的现代化数据采集平台 项目总览
爬虫·python·深度学习·wpf