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

简介: 可以看到cv2.findContours()函数可以将目标的所有边界点都进行导出来,但是他的点存在一个问题,太过密集,如果我们想将语义分割的结果重新导出成labelme格式的json文件进行修正时,这就会存在点太密集没有办法进行修改,这里展示一个示例:没有对导出的结果进行修正,在labelme中的效果图。

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


假设我们想要提取的目标边界长这样:


1cb97ad274f445798a0bc39f22b0937b.png


我们先使用以下代码查看效果


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中的效果图。


8d97b478fa114843af92ac19961b88a9.png


可以看到这里直接导出的点太过于密集,需要对其进行一个优化,否则难以直接使用labelme进行修正。


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


这里我们提供我们转化后的一个效果图:


416128b373324788b46b38023c65e664.png


目前这个点的密集程度已经大大减少,基本上已经接近人工在labelme软件上标注的效果。


创作不易,可以通过这个链接下载代码,如果存在问题可以私信我下载链接

如果对您有帮助可以点👍哦

目录
相关文章
|
9月前
|
机器学习/深度学习 数据可视化 PyTorch
零基础入门语义分割-地表建筑物识别 Task5 模型训练与验证-学习笔记
零基础入门语义分割-地表建筑物识别 Task5 模型训练与验证-学习笔记
529 2
|
9月前
|
机器学习/深度学习 算法 机器人
【论文速递】TMM2023 - FECANet:用特征增强的上下文感知网络增强小样本语义分割
【论文速递】TMM2023 - FECANet:用特征增强的上下文感知网络增强小样本语义分割
|
移动开发 文字识别 算法
论文推荐|[PR 2019]SegLink++:基于实例感知与组件组合的任意形状密集场景文本检测方法
本文简要介绍Pattern Recognition 2019论文“SegLink++: Detecting Dense and Arbitrary-shaped Scene Text by Instance-aware Component Grouping”的主要工作。该论文提出一种对文字实例敏感的自下而上的文字检测方法,解决了自然场景中密集文本和不规则文本的检测问题。
1970 0
论文推荐|[PR 2019]SegLink++:基于实例感知与组件组合的任意形状密集场景文本检测方法
|
1月前
|
人工智能 并行计算 PyTorch
SPRIGHT:提升文本到图像模型空间一致性的数据集
SPRIGHT 是一个专注于空间关系的大型视觉-语言数据集,通过重新描述600万张图像,显著提升文本到图像模型的空间一致性。
61 18
SPRIGHT:提升文本到图像模型空间一致性的数据集
|
4月前
|
机器学习/深度学习 JSON 算法
语义分割笔记(二):DeepLab V3对图像进行分割(自定义数据集从零到一进行训练、验证和测试)
本文介绍了DeepLab V3在语义分割中的应用,包括数据集准备、模型训练、测试和评估,提供了代码和资源链接。
762 0
语义分割笔记(二):DeepLab V3对图像进行分割(自定义数据集从零到一进行训练、验证和测试)
|
4月前
|
数据采集
遥感语义分割数据集中的切图策略
该脚本用于遥感图像的切图处理,支持大尺寸图像按指定大小和步长切割为多个小图,适用于语义分割任务的数据预处理。通过设置剪裁尺寸(cs)和步长(ss),可灵活调整输出图像的数量和大小。此外,脚本还支持标签图像的转换,便于后续模型训练使用。
43 0
|
9月前
|
计算机视觉
论文介绍:像素级分类并非语义分割的唯一选择
【5月更文挑战第24天】论文《像素级分类并非语义分割的唯一选择》提出了MaskFormer模型,该模型通过掩模分类简化语义与实例级分割任务,无需修改模型结构、损失函数或训练过程。在ADE20K和COCO数据集上取得优异性能,显示处理大量类别时的优势。MaskFormer结合像素级、Transformer和分割模块,提高效率和泛化能力。掩模分类方法对比边界框匹配更具效率,且MaskFormer的掩模头设计降低计算成本。该方法为语义分割提供新思路,但实际应用与小物体处理仍有待检验。[链接](https://arxiv.org/abs/2107.06278)
79 3
|
传感器 机器学习/深度学习 编解码
智能驾驶--语义分割 公开数据集 汇总
本文整理了10个质量较好,数据集较大,比较新的,图像语义分割的公开数据集;主要服务于智能驾驶方向(辅助驾驶、自动驾驶等)。
820 0
|
PyTorch 算法框架/工具
语义分割数据增强——图像和标注同步增强
其中常见的数据增强方式包括:旋转、垂直翻转、水平翻转、放缩、剪裁、归一化等。
887 0
|
机器学习/深度学习 自动驾驶
使用迭代方法为语义分割网络生成对抗性
使用迭代方法为语义分割网络生成对抗性。
130 0
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等