视频标注(vott)+自动标注(vott)+ 视频标注框显示(python)

下载vott:www.github.com/Microsoft/VoTT/releases

第一步:创建文件夹

source文件夹:用来放需要标注的视频

target文件夹:用来放vott导出的json文件

result文件夹:用来存放python转换后的视频和图片

第二步:创建项目

1.打开vott,点击New Project

2.给项目取名为text,


2.添加源文件夹,导入需要标注的视频

  • 点击 “Add Connection”.

  • 在Display Name中输入链接的source
  • 在 Provider项下拉菜单选择 Local File System
  • 在 Folder Path选项下,选择刚刚创建的源文件夹 source
  • 选择完成后,点击 Save Connection 即可完成源文件夹指定。

3.添加目标文件夹,即设置标注视频导出的json文件存放的位置,步骤同上

4.保存项目

  • 在Source Connection选择之前添加的源文件夹
  • 在Target Connection选择之前添加的目标文件夹
  • Frame Extraction Rate为视频帧率,按所需改动
  • Tags为标注标签

第三步:打视频标注

1.手动标注

  • 选择矩形标注框
  • 框住乌龟
  • 点击标注列表的小加号添加标签表标签,在Add new tag中输入标签名,再回车
  • 连续标注5-8帧,开始自动标注

2.自动标注(自动标注没手动的精细,一般需对自动的进行调整)

第四步:保存导出

第五步:视频标注框显示

  • 下载所需要的库
 pip install bounding_box --user
pip install opencv-python --user
 pip install opencv-contrib-python --user
  • 运行以下脚本,可在result文件夹中看见显示标注框视频和图片
  • import json
    import cv2
    import os
    from bounding_box import bounding_box as bbox_plot
    
    
    # 填写标签名称
    Draw_Tags = ['turtle','banana']
    # 填写target文件夹中vott-json-export文件夹的路径
    Img_Dir = r'D:\English_path\text\target\vott-json-export'
    # 填写result文件夹,即保存显示标注框视频的路径
    Save_Dir = r'D:\English_path\text\result'
    def make_video(img_dir, img_size=(1920, 1080), fps=5):
        file_path = os.path.join(Save_Dir, "demo.mp4")
        filelist = os.listdir(img_dir)
        fourcc = cv2.VideoWriter_fourcc('D', 'I', 'V', 'X')
        video = cv2.VideoWriter(file_path, fourcc, fps, img_size)
    
        for item in filelist:
            if item.endswith('.jpg'):
                item = img_dir + '/' + item
                img = cv2.imread(item)
                video.write(img)
        video.release()
    
    
    def draw_one_img(img_name, img_timestamp, labels_list):
    
        img_path = os.path.join(Img_Dir, img_name)
        img = cv2.imread(img_path, cv2.IMREAD_COLOR)
        for label in labels_list:
            tag = label['tags'][0]
            if not tag in Draw_Tags:
                continue
            bbox = label['boundingBox']
            left = bbox['left']
            top = bbox['top']
            right = left + bbox['width']
            bottom = top + bbox['height']
            bbox_plot.add(img, left, top, right, bottom, tag, 'red')
        save_name = 'time%s.jpg' % format(img_timestamp, '.2f').replace('.', '')
        save_path = os.path.join(Save_Dir, save_name)
        cv2.imwrite(save_path, img)
        print(save_name, 'ok~')
    
    
    def main():
        lb_json = os.path.join(Img_Dir, 'text-export.json')     		# 填写\target\vott-json-export文件夹中.json后缀的文件名
        with open(lb_json, 'r',encoding='utf-8') as f:
            labels_dict = json.load(f)
    
        assets = labels_dict['assets']
        size = None
    
        for k, v in assets.items():
            img_name = v['asset']['name']
            img_timestamp = v['asset']['timestamp']
            if size is None:
                w = v['asset']['size']['width']
                h = v['asset']['size']['height']
                size = (w, h)
            labels_list = v['regions']
            draw_one_img(img_name, img_timestamp, labels_list)
    
        make_video(Save_Dir, img_size=size)
    
    
    if __name__ == '__main__':
        main()

  • 20
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值