VGG Image Annotator (VIA)一款开源的图像标注工具,由Visual Geometry Group开发。可以在线和离线使用,可标注矩形、圆、椭圆、多边形、点和线。标注完成后,可以导出为csv和json文件格式。
mmdetection等框架中有的不支持VIA标注的数据,就需要写一个转化的代码
其实就是两个json文件的转化,两种标注格式读入后就是两个dict格式的数据,我们要做的就是一层一层把dict拨开,放入coco format的dict中。
首先可以先格式化输出一下两个json文件,比较差别,需要安装一个包
yum install -y jq
然后
cat a.json | jq
然后就可以写转化的代码了,这里提供我写的版本,亲测好用。
中间有一些小逻辑可以忽略(自己用了,就不改了)
import json
import os
import cv2
import numpy as np
def _get_bbox(all_points_x, all_points_y):
min_x , max_x = min(all_points_x), max(all_points_x)
min_y , max_y = min(all_points_y), max(all_points_y)
bbox = [min_x, min_y, max_x - min_x, max_y - min_y]
return bbox
def _get_mask(all_points_x, all_points_y):
min_x , max_x = min(all_points_x), max(all_points_x)
min_y , max_y = min(all_points_y), max(all_points_y)
for zz in range(len(all_points_x)): #find the biggest in list
if(all_points_x[zz] == max_x):
break
left_lines = []
right_lines = []
mask = []
for zzz in range(len(all_points_x)): # draw lines
if zzz != zz :
if all_points_y[zzz] < all_points_y[zz]:
angle = abs(all_points_x[zzz] - all_points_x[zz])/abs(all_points_y[zzz] - all_points_y[zz] + 1e-7)
#print('left',angle)
left_lines.append([angle,all_points_x[zzz],all_points_y[zzz]])
else:
angle = abs(all_points_x[z

本文介绍如何将VGGImageAnnotator(VIA)标注的数据转换为COCO格式,适用于mmdetection等框架。通过解析两个json文件并进行格式转换,实现数据的无缝对接。
最低0.47元/天 解锁文章
3144

被折叠的 条评论
为什么被折叠?



