优化cv2.findContours()函数提取的目标边界点,使语义分割进行远监督辅助标注

news2024/11/25 14:39:47

优化cv2.findContours()函数提取的目标边界点

假设我们想要提取的目标边界长这样:
在这里插入图片描述
我们先使用以下代码查看效果

import cv2
import numpy as np
import os

if __name__ == '__main__':
    # 图像可以选择自己的
    image_filepath = './landslide/image/20221129112713.png'
    # 读取图像
    image = cv2.imread(image_filepath)
    # 转化为灰度图像
    gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
    cv2.imshow('gray', gray)
    cv2.waitKey(0)
    # 提取轮廓,重要的是contours这个数组类型
    contours, hierarchy = cv2.findContours(gray, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
    for i in range(len(contours)):
        # 每一次对一个轮廓进行描边,描边的颜色为color参数,轮廓的索引值为i
        new_image = cv2.drawContours(image, contours, i, color=[0, 0, 255])
        cv2.imshow('new_image', new_image)
        cv2.waitKey(0)

可以看到cv2.findContours()函数可以将目标的所有边界点都进行导出来,但是他的点存在一个问题,太过密集,如果我们想将语义分割的结果重新导出成labelme格式的json文件进行修正时,这就会存在点太密集没有办法进行修改,这里展示一个示例:没有对导出的结果进行修正,在labelme中的效果图。
在这里插入图片描述
可以看到这里直接导出的点太过于密集,需要对其进行一个优化,否则难以直接使用labelme进行修正。

优化的思想可以使用一些优化算法对密集的点进行删除,网上都有一些教程。

这里我们提供我们转化后的一个效果图:
在这里插入图片描述
目前这个点的密集程度已经大大减少,基本上已经接近人工在labelme软件上标注的效果。

创作不易,可以通过这个链接下载代码,如果存在问题可以私信我下载链接。
如果对您有帮助可以点👍哦

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/89222.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java并发和多线程编程学习(二) Java内存模型

并发编程中需要处理的两个重要问题是线程之间如何通信以及线程之间如何同步,Java的并发采用的是共享内存模型,且线程之间的通信总是隐式执行,所以需要我们深入学习从而避免复杂的内存可见性问题 内存模型的抽象结构 在Java中,所…

java计算机毕业设计ssm基于H5的音乐播放管理系统

项目介绍 该系统是基于H5,使用Vue、JavaScript、CSS技术开发而成。系统服务器使用Tomcat,利用MySQL存储数据、用JDBC实现数据的访问。管理员在系统部署阶段将所有用户对应权限进行分配。正式投入使用时,用户通过登录模块进入系统。根据权限控制管理,每个用户角色的操作界面也有…

【轻量级开源ROS 的机器人设备(4)】--(2)通信实现

前文链接 【轻量级开源ROS 的机器人设备(4)】--(1)通信模块_无水先生的博客-CSDN博客 三、 通信概要 概述 ROS 的通信层是 ros_comm 堆栈的一部分,遵循发布/订阅范式,如图 2.2 所示。网络,也称…

(设计模式) (李建忠 C++) 23种设计模式

文章目录前言组件协作模板方法 Template Method动机模式定义结构代码情景版本1版本2变化原理要点总结个人小结策略模式 Strategy动机模式定义结构代码情景版本1版本2要点总结个人小结观察者模式 Observer动机模式定义结构代码场景版本1版本2版本2要点总结个人小结单一职责装饰模…

斐波那契问题——上台阶问题

题目: 给定整数N,代表台阶数,一次可以跨2个或者1个台阶,返回有多少种走法。 举例: N3,可以三次跨一个台阶,也可以先跨2再跨1,也可以先跨1再跨2,共三种走法。 思路&…

上海还有哪些比较好的IB学校?

今天我们就一起来盘点沪上几所办学成绩比较好的IB学校,快来看看哪所学校才是孩子的最好选择! Promise 上海民办平和学校 上海市民办平和学校(Shanghai Pinghe School)是由上海金桥(集团)有限公司于1996年9月…

常用Java接单平台一览

不少主攻Java的程序员兄弟除了工作,还会在空闲时间选择接单来增加自己的收入;对于那些生活在二三线的程序员兄弟们,通过接单,来获得与一线城市对等的收入。具体该怎么做,且听我娓娓道来。接下来干货满满,先…

前端—新增的嵌入多媒体元素与交互性元素

新增的嵌入多媒体元素与交互性元素 新增的嵌入多媒体元素有video和audio元素,分别是用来插入视频和声音的。值得注意的是,可以在开始标签和结束标签之间放置文本内容,这样旧版本的浏览器就可以显示出不支持该标签的信息。例如下面的代码。HT…

Qt Visual Studio添加Qt ui和编译注意事项

文章目录背景新建Widget 对象UIC程序生成ui_xxxx.h文件编译出错设置QtWidgetsTestClass.h的属性总结背景 工程中需要新的界面VS中新建Qt的ui文件,然后需要生成对应的.cpp 和 .h 文件 新建Widget 对象 生成对应的三个文件.ui, xxx. cpp, xxx.h 但是此时在QtWidget…

IDEA报错问题:If you already have a 64-bit JDK installed 解决方法【杭州多测师_王sir】【杭州多测师】...

启动IDEA的时候突然报错: 第一步:首先进入到C:\Users\用户名\.IdeaIC2019.3\config这个目录下面找到idea64.exe.vmoptions文件 第二步:通过notepad打开,进入编辑 第三步:然后修改配置如下:把Xms和Xmx的参数…

[MySQL]-主从同步实战

[MySQL]-主从同步实战 森格 | 2022年12月14日 本文主要为在平时work中遇到的主从同步上的问题的处理,对其进行巩固总结。 一、场景介绍 ​ 在一个风和日丽的下午4点半,突然就收到一个主从同步失败的提示,三两下打开从库一看,好嘛…

Stimulsoft Reports 2023.1.1 Crack 根据自身需求选择

Stimulsoft 专门从事 Microsoft .NET Framework 组件的开发。客户满意是公司的首要任务,因此它旨在生产顶级质量的软件。应用程序开发并不总是那么容易,但 Stimulsoft 尽最大努力帮助开发人员将当今市场上最先进的技术整合到他们的应用程序中 特征 Razor…

老照片修复怎么修?这三个方法可以让你实现修复操作

相信大家在家里翻看以前的照片时,会发现有部分照片颜色已经泛黄,内容也跟着变得有些模糊不清了,那当我们遇到这种情况的时候,应该怎么办呢?别担心,今天就来教大家几个实用的方法,让大家学会老照…

stm32 adc dma

ADC采集电压,使用DMA传输到内存 一,ADC设置 1,Mode。 这里我们使用ADC的独立模式。 2,时钟分频 ADCCLK由 PCLK2分频得到,最大时钟频率36M。ADC 时钟太快,采样可能不够准确,误差大。 3,采样分…

砥砺深耕,笃行致远向未来——中国社科院与美国杜兰金融管理硕士项目

想在一个领域里有所发展,相信深耕下去一定会有收获。工作中积累的实战经验或是在文章上看到的补给型知识大都属于碎片化的,系统的学习理论知识很重要,尤其对于金融行业,中国社科院与美国杜兰大学合办金融管理硕士项目的出现&#…

演讲实录|OpenMLDB 与阿里云 MaxCompute 生态集成

在 OpenMLDB 第 8 期 Meetup 中,OpenMLDB PMC 陈迪豪以出租车行车时间预测问题为例,使用 OpenMLDB 基于阿里云 MaxCompute 的 Serverless 服务搭建机器学习应用,从数据引入开始,实现了端到端的机器学习应用全流程构建。 云服务作…

软件工程---习题五

1.为每种类型的模块耦合举一个具体例子。   答:耦合式对一个软件结构内不同模块之间互联程度的度量。耦合强弱取决于接口的复杂度,进入或访问某一模块的点,以及通过接口的数据。一般模块之间的可能的连接方式有七种,构成耦合的七…

深入MVC模式和三层架构

MVC模式 MVC 是一种分层开发的模式,其中: M:Model,业务模型,处理业务 V:View,视图,界面展示 C:Controller,控制器,处理请求,调用模…

深度学习中的卷积操作

本文从信号处理中的互相关运算引入深度学习中的卷积。 然后介绍了不同的卷积类型,以及如何在pytorch中使用这些卷积层。 (在看pytorch文档中的Conv1D/2D/3D的时候感到比较困惑,又很好奇深度学习中各种各样的卷积操作。于是结合整理几乎包含深…

Linux软硬链接与动静态库

🧸🧸🧸各位大佬大家好,我是猪皮兄弟🧸🧸🧸 文章目录一、创建软硬链接二、软硬链接①软链接②硬链接③硬链接的用处④软硬链接的区别三、库的作用①库与为什么用库②动静态库的加载过程四、动静…