当前位置: 首页 > article >正文

获取轮廓末端点

获取轮廓末端点

示例代码

import cv2
import numpy as np


def get_mask_thinning(mask):
    mask_thinning = cv2.ximgproc.thinning(
        mask,
        # thinningType=cv2.ximgproc.THINNING_ZHANGSUEN
        thinningType=cv2.ximgproc.THINNING_GUOHALL,
    )
    return mask_thinning

def get_contour_end_points(mask):
    """
    获取轮廓末端点,八领域法判断
    通过计算当前像素与它相邻的像素前景数量=2即可判断它为端点
    """
    end_point_list = []
    # 使用cv2.findNonZero()函数查找非零像素的坐标
    nonzero_pts = cv2.findNonZero(mask)

    # 获取端点
    for point in nonzero_pts:
        x, y = point[0]
        # 计算邻域内的前景像素数
        neighbors = np.sum(mask[y - 1 : y + 2, x - 1 : x + 2] / 255)
        if neighbors == 2:
            end_point_list.append((x, y))

    return end_point_list

def visual_mask_points(mask, point_list, visual_color=(0, 0, 255)):
    mask_visual = cv2.cvtColor(mask, cv2.COLOR_GRAY2BGR)
    for (x, y) in point_list:
        mask_visual[y, x, :] = visual_color

    return mask_visual

if __name__ == "__main__":
    mask_path = "./test.png"
    mask = cv2.imread(mask_path, cv2.IMREAD_GRAYSCALE)
    mask_thinning = get_mask_thinning(mask)
    end_point_list = get_contour_end_points(mask_thinning)
    mask_visual = visual_mask_points(mask_thinning, end_point_list)
    mask_visual_path = "./test_visual.png"
    cv2.imwrite(mask_visual_path, mask_visual)

http://www.kler.cn/a/415940.html

相关文章:

  • Unity的GPU Instancing技术
  • mac访达打开终端
  • Admin.NET框架使用宝塔面板部署步骤
  • 计算机毕业设计Python+LSTM天气预测系统 AI大模型问答 vue.js 可视化大屏 机器学习 深度学习 Hadoop Spark
  • 【81-90期】Java核心面试问题深度解析:性能优化与高并发设计
  • 浅谈——深度学习和马尔可夫决策过程
  • 快速理解微服务中Gateway的概念
  • 实现对图片或者视频增加隐藏水印和提取水印
  • Linux下的wlan0控制
  • 将服务器上的服务映射到本地使用
  • MarkDown-插入图片-图片url地址的生成获取方法
  • 分布式协同 - 分布式锁一二事儿
  • 【深度学习】各种卷积—卷积、反卷积、空洞卷积、可分离卷积、分组卷积
  • 从简单的自动化脚本到复杂的智能助手:Agent技术的实践与应用
  • 【分布式】分布式事务
  • 浅谈telnet和ping
  • ChatGPT 网络安全秘籍(三)
  • python pycharm与cmd中制表符不一样
  • 时间相关转换
  • 低空经济“蓄势腾飞”,数字样机保驾护航
  • 我们来学mysql -- 事务之概念(原理篇)
  • 深入浅出 Python 网络爬虫:从零开始构建你的数据采集工具
  • Qt知识之 1. Q_DECLARE_METATYPE和qRegisterMetaType
  • 基于Python制作一个简易UI界面
  • React Native学习笔记(一)
  • linuxmysqliptablesfirewalldtcpdump备份恢复常用命令