数据集的简单制作和使用
参考资料:Labelme分割标注软件使用
 
  使用labelme软件对数据集进行分割
使用labelme软件对数据集进行分割
  每张图片获得一个json文件
每张图片获得一个json文件
 
 我们看看其中一个文件,内容包含每个点在图片中的位置
 
 
  
 
我们可以自己写一个脚本(或使用别人的)将上述json转换为我们想要的json格式
 
|  JPEGImages中的内容 |  Visualization中的内容 | 
|  JPEGImages中某张图 |  Visualization中某张图 | 
我们来看看annotations.json中的具体内容
 images部分包含图片的相对路径
 annotations部分包含对应图片中各个物体的id、分割点坐标、bounding box坐标等
 
 如何利用annotations.json文件从某张图片中提取出我们想要的信息?
(1)打开这个json文件
        with open(anno_json, 'r') as f:
            data = json.load(f)
            self.images = data["images"]
            self.annotations = data["annotations"]
(2)根据json文件中的各个字段锁定想要的信息
 示例代码
# 根据下标获取图片 {...'file_name':'JPEGImages/.jpg,height:,width}
first_image = self.images[first_image_index]
# path/.../.jpg
tar_image_path = os.path.join(self.image_root, first_image["file_name"])
# [[[74,81,120],[],[]...[]]]
tar_image = cv2.imread(tar_image_path)
# images中id对应annotation中的image_id,根据 image_id 获取对应的 annotations
# 第一张图片中的第一个物体和第二个物体的分割信息[{'area':,'bbox':[..,..,..,..],'category_id':1,'id':30,'image_id':15,'segmentation:[[..,..,..]]},{同第一个}]
first_annotations = [ann for ann in self.annotations if ann["image_id"] == first_image["id"]]
# 第一张图片中第一个物体的分割信息{'area':,'bbox':[..,..,..,..],'category_id':1,'id':30,'image_id':15,'segmentation:[[..,..,..]]}
object_mask_ann = first_annotations[1]
# 获得分割点坐标 segmentation:[..,..,..]
segmentation = object_mask_ann["segmentation"][0]
# 获得bbox
target_object_bbox = object_mask_ann["bbox"]
经过处理得到自己想要的信息
 



















