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

将语义分割的标签转换为实例分割(yolo)的标签

语义分割的标签(目标处为255,其余处为0)
在这里插入图片描述
实例分割的标签(yolo.txt),描述边界的多边形顶点的归一化位置
在这里插入图片描述
绘制在原图类似蓝色的边框所示。
在这里插入图片描述

废话不多说,直接贴代码;

import os
import cv2
import numpy as np
import shutildef img2label(imgPath, labelPath, imgbjPath, seletName):# 检查labelPath文件夹是否存在if not os.path.exists(labelPath):os.makedirs(labelPath)if not os.path.exists(imgbjPath):os.makedirs(imgbjPath)imgList = os.listdir(imgPath)for imgName in imgList:# 筛选if imgName.split('_')[0] != seletName and seletName != '':continueprint(imgName)img = cv2.imread(imgPath + imgName, cv2.IMREAD_COLOR)h, w, _ = img.shape# print(h, w)GrayImage=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) #图片灰度化处理ret, binary = cv2.threshold(GrayImage,40,255,cv2.THRESH_BINARY) #图片二值化,灰度值大于40赋值255,反之0# ret, binary = cv2.threshold(binary, 80, 255, cv2.THRESH_BINARY_INV)    # (黑白二值反转)cv2.imwrite(r'denoisedfz.png', binary) #保存图片# 腐蚀# kernel = np.ones((3,3),np.uint8) # binary = cv2.erode(binary,kernel,iterations = 3)thresholdL = h/100 * w/100   #设定阈值thresholdH = h/1 * w/1   #设定阈值#cv2.fingContours寻找图片轮廓信息"""提取二值化后图片中的轮廓信息 ,返回值contours存储的即是图片中的轮廓信息,是一个向量,内每个元素保存了一组由连续的Point点构成的点的集合的向量,每一组Point点集就是一个轮廓,有多少轮廓,向量contours就有多少元素"""contours,hierarch=cv2.findContours(binary,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_TC89_L1)contoursNorm = []objs= []# print(contours)for i in range(len(contours)):area = cv2.contourArea(contours[i]) #计算轮廓所占面积# print(area)if area > thresholdL and area < thresholdH:obj = ['0']for point in contours[i]:obj.append(str(point[0][0] * 1.0 / w)) # 获取xobj.append(str(point[0][1] * 1.0 / h)) # 获取ycontoursNorm.append(contours[i])objs.append(obj)# print(objs[10])# 查看效果cv2.drawContours(img, contoursNorm, -1,(255,0,0),2)cv2.imwrite(imgbjPath+imgName, img) #保存图片if len(objs) == 0:print('不保存标签,跳过!')continue# 写入txtrealName = imgName.split('-l')[0]f=open(labelPath + realName + '.txt',"w")for obj in objs:f.writelines(' '.join(obj))f.writelines('\n')f.close()# break# oridata 保存着原图像
# maskdata 保存着标签图像
# lab 保存这yolo格式的标签文件
# bj 保存着标记好边界的图像def OrganizeImages(path):imgs = os.listdir(path)for im in imgs:imPath = os.path.join(path, im)if im.split('.')[-1] == 'jpg':# 原图像# 移动到oridatasource_path = imPathdestination_path = 'data\\oridata\\' + imshutil.copy(source_path, destination_path)if im.split('.')[-1] == 'png':# mask label# 移动到maskdatasource_path = imPathdestination_path = 'data\\maskdata\\' + imshutil.copy(source_path, destination_path)if __name__ == '__main__':img2label(imgPath='data\\maskdata\\',  # maskdata 保存着标签图像labelPath='data\\lab\\',     # lab 保存这yolo格式的标签文件imgbjPath = 'data\\bj\\',    # bj 保存着标记好边界的图像seletName='')

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Git-如何将本地项目推到GitHub
  • Linux中的echo命令
  • 【LabVIEW学习篇 - 18】:人机界面交互设计02
  • Chrome extension 谷歌浏览器插件 YouTube 监听地址栏 url 变化
  • 【Qt】Qt和JavaScript使用QWebChannel交互
  • PyTorch库学习之nn.ConvTranspose2d(模块)
  • 【每日一题】LeetCode 1652.拆炸弹(数组、滑动窗口)
  • [数据集][目标检测]轮胎检测数据集VOC+YOLO格式4629张1类别
  • Android架构组件中的MVVM应用
  • 进入docker的命令和docker命令的基础操作
  • python测试开发基础---线程和进程的概念
  • 鸿蒙轻内核M核源码分析系列三 数据结构-任务排序链表
  • 【软件设计】常用设计模式--工厂模式
  • 经验笔记:DevOps
  • Linux 硬件学习 s3c2440 arm920t蜂鸣器
  • Android 架构优化~MVP 架构改造
  • Angular4 模板式表单用法以及验证
  • canvas实际项目操作,包含:线条,圆形,扇形,图片绘制,图片圆角遮罩,矩形,弧形文字...
  •  D - 粉碎叛乱F - 其他起义
  • DOM的那些事
  • exif信息对照
  • flask接收请求并推入栈
  • Js基础知识(一) - 变量
  • js算法-归并排序(merge_sort)
  • Mysql数据库的条件查询语句
  • 创建一个Struts2项目maven 方式
  • 翻译 | 老司机带你秒懂内存管理 - 第一部(共三部)
  • 关于 Linux 进程的 UID、EUID、GID 和 EGID
  • 蓝海存储开关机注意事项总结
  • 如何用Ubuntu和Xen来设置Kubernetes?
  • 突破自己的技术思维
  • Unity3D - 异步加载游戏场景与异步加载游戏资源进度条 ...
  • 阿里云API、SDK和CLI应用实践方案
  • 格斗健身潮牌24KiCK获近千万Pre-A轮融资,用户留存高达9个月 ...
  • 好程序员大数据教程Hadoop全分布安装(非HA)
  • ​​​【收录 Hello 算法】10.4 哈希优化策略
  • ​渐进式Web应用PWA的未来
  • ​软考-高级-系统架构设计师教程(清华第2版)【第1章-绪论-思维导图】​
  • ‌移动管家手机智能控制汽车系统
  • #1015 : KMP算法
  • #14vue3生成表单并跳转到外部地址的方式
  • (39)STM32——FLASH闪存
  • (k8s)Kubernetes本地存储接入
  • (二十五)admin-boot项目之集成消息队列Rabbitmq
  • (剑指Offer)面试题41:和为s的连续正数序列
  • (牛客腾讯思维编程题)编码编码分组打印下标题目分析
  • (文章复现)基于主从博弈的售电商多元零售套餐设计与多级市场购电策略
  • .form文件_一篇文章学会文件上传
  • .naturalWidth 和naturalHeight属性,
  • .net core 控制台应用程序读取配置文件app.config
  • .NET delegate 委托 、 Event 事件
  • .net FrameWork简介,数组,枚举
  • .NET HttpWebRequest、WebClient、HttpClient
  • .NET 动态调用WebService + WSE + UsernameToken
  • .net 发送邮件