VIL100数据集(IMG:image(尺寸((1080 * 1920),(720 * 1280),(480 * 960),(478 * 960),(448 * 960),(378 * 672),(474 * 960)),GT:json)

目的:处理成统一尺寸,便于model train.
(基于车道线的消失点裁剪后resize成800 * 320,GT格式包括mask,点格式的line_txt)

import os
import glob
import shutil
import cv2
import json
import numpy as np
path="/VIL100"
file_path="/VIL100/data/train.txt"
img_path="/merge/VIL100/image"
mask_path="/merge/VIL100/mask"
text_path = '/merge/VIL100/line_txt/'
n_0 =0
new_w = 800
new_h = 320
with open(file_path,'r') as f:for line in f:image_name_old = line.split()[0].split('/')[-1]ori_image = cv2.imread(path+line.split()[0])mask_name_old = line.split()[1].split('/')[-1]# read jsonjson_name = path + line.split()[0].replace('JPEGImages', 'Json')+'.json'mask_json = json.load((open(json_name, encoding='utf-8')))anno = mask_json['annotations']['lane']points_list = []for anno_line in anno:points_list.append(np.array(anno_line['points']))if len(anno) == 0:print("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@kong")print(points_list)continuemask =  cv2.imread(path+line.split()[1],0)Num= np.amax(mask[:,:],axis=0)dice=np.argmax(mask[:,:],axis=0)used_dice=[]for i in range(0,len(dice)):if dice[i]!=0:used_dice.append(dice[i])if len(used_dice)==0:used_dice.append(0)crop_y=np.amin(used_dice)# print(crop_y)img = np.zeros((mask.shape[0]-crop_y, mask.shape[1], 3), np.uint8)img[:mask.shape[0]-crop_y, :, :] = ori_image[crop_y:, ...]mas = np.zeros((mask.shape[0] - crop_y, mask.shape[1], 3), np.uint8)mas[:mask.shape[0] - crop_y, :, 0] = mask[crop_y:, :]mas[:mask.shape[0] - crop_y, :, 1] = mask[crop_y:, :]mas[:mask.shape[0] - crop_y, :, 2] = mask[crop_y:, :]img_new = cv2.resize(img, (new_w, new_h), interpolation=1)mas_new = cv2.resize(mas, (new_w, new_h), interpolation=1)draw_img = img_new.copy()mas_new =np.where(mas_new>0 ,255,0)len_num = len(str(n_0))split_0 = 8 - len_numPublic_name = "0000000000000000000000000000000000000000000000000000000000000000"split_name = Public_name[0:split_0]#Visualization crop and resize for the points of json# for idx, pts in enumerate(points_list):#     for i in range(1, len(pts)):#         x1 = int(pts[i - 1][0]/ori_image.shape[1] * new_w)#         y1 = int((pts[i - 1][1] - crop_y)/(ori_image.shape[0]-crop_y) * new_h)#         x2 = int(pts[i][0]/ori_image.shape[1] * new_w)#         y2 = int((pts[i][1] - crop_y)/(ori_image.shape[0]-crop_y) * new_h)#         cv2.line(draw_img, (x1,y1),#                  (x2,y2), (0,125,45), thickness=4)# plt.figure(dpi=720)# plt.imshow(draw_img, cmap='BrBG_r')# save filesimage_name = 'VIL100' + "_" + split_name + str(n_0)+".png"mask_name = 'VIL100' + "_" + split_name + str(n_0)+".png"txt_name = 'VIL100' + "_" + split_name + str(n_0)+".lines.txt"cv2.imwrite(os.path.join(img_path, image_name), img_new)cv2.imwrite(os.path.join(mask_path, mask_name), mas_new)save_txt_path = os.path.join(text_path, txt_name)with open(save_txt_path, 'w') as fp:lines = ''for pts in(points_list):line = ''for i in range(len(pts)):x = pts[i][0]/ori_image.shape[1] * new_wy = (pts[i][1] - crop_y)/(ori_image.shape[0]-crop_y) * new_hline += f"{x:.2f} {y:.2f} "line+='\n'lines+=line#print(lines)fp.writelines(lines)n_0 = n_0 + 1

VIL100数据集处理相关推荐

  1. VIL-100: 一个新的车道线检测数据集和基线模型(ICCV2021)

    作者丨StrongerTang@知乎 来源丨https://zhuanlan.zhihu.com/p/411156533 编辑丨3D视觉工坊 之前写过一篇车道线检测的综述,得到了一些朋友的认可,也因此 ...

  2. 详解车道线检测数据集和模型 VIL-100: A New Dataset and A Baseline Model for Video Instance Lane Detection

    本文介绍一个新的车道线数据集 VIL-100 和检测模型 MMA-Net,论文已收录于 ICCV2021,重点是理解本文提出的 LGMA 模块,用于聚合局部和全局记忆特征. 论文链接:https:// ...

  3. 车道线检测新工作VIL-100: A New Dataset and A Baseline Model for Video Instance Lane Detection ICCV2021

    之前写过一篇车道线检测的综述,得到了一些朋友的认可,也因此结识了几个做车道线检测任务的朋友. 之前的车道线检测综述可以点击阅读: 车道线检测综述及近期新工作 https://blog.csdn.net ...

  4. VIL-100视频车道线实例数据集格式转换

    VIL-100车道线数据集 数据集简介及下载路径 数据集格式转换 支持的标签转化格式:1.车道线实例分割标签; 2.车道线实例点集标签(Tusimple标注形式) 数据集相关示例图 - 原图标签可视化 ...

  5. docred数据集情况笔记

    20210621 什么是关系事实,核心参考信息 实体提及:某个实体在不同句子中出现都叫提及 关系事实:就是具有真实关系的 实体对? 作者辛苦用人工标注的方式整理了目前最大的基于维基百科的文档级关系抽取 ...

  6. OFRecord 图片文件制数据集

    OFRecord 图片文件制数据集 在 OFRecord 数据格式 和 加载与准备 OFRecord 数据集 中,分别学习了 OFRecord 数据格式,以及如何将其它数据集转为 OFRecord 数 ...

  7. OFRecord 数据集加载

    OFRecord 数据集加载 在数据输入一文中知道了使用 DataLoader 及相关算子加载数据,往往效率更高,并且学习了如何使用 DataLoader 及相关算子. 在 OFrecord 数据格式 ...

  8. 深度学习数据集定义与加载

    深度学习数据集定义与加载 深度学习模型在训练时需要大量的数据来完成模型调优,这个过程均是数字的计算,无法直接使用原始图片和文本等来完成计算.因此与需要对原始的各种数据文件进行处理,转换成深度学习模型可 ...

  9. TensorFlowMNIST数据集逻辑回归处理

    本节基于回归学习对 MNIST 数据集进行处理,但将添加一些 TensorBoard 总结以便更好地理解 MNIST 数据集. MNIST由https://www.tensorflow.org/get ...

最新文章

  1. Apache 配置 Basic 认证
  2. Eclipse常用插件下载地址
  3. JAVA学习-JAVA实现对象描述(java面向对象特性)
  4. python桌面程序打开慢_转 : 终于搞清楚了为什么Java桌面程序总是感觉慢的原因...
  5. 摩拜女程序员状告其前端负责人性骚扰!
  6. SSH框架 openSessionInView的配置
  7. 第 7 章 Neutron - 072 - 详解 ML2 Core Plugin(II)
  8. Python学习笔记——Python版本的选择
  9. 尚硅谷SpringCloud Alibaba
  10. HttpSession详解
  11. 怎样才算是优质的Scratch作品?
  12. 用户增长:APP推广的五大方法
  13. win10更新完提示未安装任何音频输出设备2019-11-13解决
  14. mysql数据库服务器怎么打开_怎么启动mysql数据库服务器
  15. ubuntu deepin-wine 微信之后打不开
  16. [BJDCTF 2nd] 燕言燕语-y1ng
  17. iOS 支付宝支付 微信支付SDK接口不统一? 盘他!
  18. tar .........
  19. Latex字体加粗不了
  20. java neo4j rest api_Neo4j REST API使用实例—ttlsa教程系列之neo4j(二)

热门文章

  1. CAD中用lisp程序实现批量偏移_求一个cad lisp 双向偏移的代码
  2. 17.Rust中函数式语言功能:迭代器与闭包
  3. PTA 7-24 书香节
  4. 百度智能云 x 华栖云 | 媒体智能化探路者
  5. ospf状态机-通俗易懂的小故事
  6. yum命令执行卡住不能退出
  7. 求1000以内的“完数”
  8. 沸点大前端组正式成员面试小问题
  9. MVVM理解 ——(2)数据劫持
  10. 简单了解下DDOS产业