zoukankan      html  css  js  c++  java
  • 利用python对WiderFace数据解析及画框

    #注:此代码稍作修改也可以用于WFLW人脸数据集的标注文件解析,
    #参见其README.md文件了解其每一行的信息,从中解析出相应字
    #段即可。

    import
    os import cv2 def draw(image_list,src_img_dir = None, tar_img_dir = None): if not os.path.exists(tar_img_dir): os.mkdir(tar_img_dir) for item in image_list: sub_path = item["path"] path_seg = sub_path.split("/") path = os.path.join(src_img_dir,sub_path) boxes = item["boxes"] img = cv2.imread(path) for box in boxes: ord = box.split(" ") x, y, w, h = int(ord[0]),int(ord[1]),int(ord[2]),int(ord[3]) cv2.rectangle(img,(x,y),(x+w,y+h),(0,255,0), 1) tar_dir = os.path.join(tar_img_dir,path_seg[0]) if not os.path.exists(tar_dir): os.mkdir(tar_dir) tar_path = os.path.join(tar_dir,path_seg[1]) cv2.imwrite(tar_path,img) def parse(label_file_path, src_img_dir, tar_img_dir): fr = open(label_file_path,'r') image_list = [] line = fr.readline().rstrip() while line: mdict = {} path = line mdict["path"] = path num = fr.readline().rstrip() boxes_list = [] for n in range(int(num)): box = fr.readline().rstrip() boxes_list.append(box) mdict["boxes"]=boxes_list image_list.append(mdict) line = fr.readline().rstrip() draw(image_list,src_img_dir,tar_img_dir) if __name__=="__main__": file_path = "/projects/DSOD/wider_face/datasets/wider_face_split/wider_face_train_bbx_gt.txt" source_img_dir = "/projects/DSOD/wider_face/datasets/train/images" target_img_dir = "/projects/DSOD/wider_face/datasets/drew" parse(file_path,source_img_dir,target_img_dir)

    其中,file_path是标注文件的路径。标注文件内容如下:

     1 0--Parade/0_Parade_marchingband_1_849.jpg
     2 1
     3 449 330 122 149 0 0 0 0 0 0 
     4 0--Parade/0_Parade_Parade_0_904.jpg
     5 1
     6 361 98 263 339 0 0 0 0 0 0 
     7 0--Parade/0_Parade_marchingband_1_799.jpg
     8 21
     9 78 221 7 8 2 0 0 0 0 0 
    10 78 238 14 17 2 0 0 0 0 0 
    11 113 212 11 15 2 0 0 0 0 0 
    12 134 260 15 15 2 0 0 0 0 0 
    13 163 250 14 17 2 0 0 0 0 0 
    14 201 218 10 12 2 0 0 0 0 0 
    15 182 266 15 17 2 0 0 0 0 0 
    16 245 279 18 15 2 0 0 0 0 0 
    17 304 265 16 17 2 0 0 0 2 1 
    18 328 295 16 20 2 0 0 0 0 0 
    19 389 281 17 19 2 0 0 0 2 0 
    20 406 293 21 21 2 0 1 0 0 0 
    21 436 290 22 17 2 0 0 0 0 0 
    22 522 328 21 18 2 0 1 0 0 0 
    23 643 320 23 22 2 0 0 0 0 0 
    24 653 224 17 25 2 0 0 0 0 0 
    25 793 337 23 30 2 0 0 0 0 0 
    26 535 311 16 17 2 0 0 0 1 0 
    27 29 220 11 15 2 0 0 0 0 0 
    28 3 232 11 15 2 0 0 0 2 0 
    29 20 215 12 16 2 0 0 0 2 0 
    30 0--Parade/0_Parade_marchingband_1_117.jpg
    31 9
    32 69 359 50 36 1 0 0 0 0 1 
    33 227 382 56 43 1 0 1 0 0 1 
    34 296 305 44 26 1 0 0 0 0 1 
    35 353 280 40 36 2 0 0 0 2 1 
    36 885 377 63 41 1 0 0 0 0 1 
    37 819 391 34 43 2 0 0 0 1 0 
    38 727 342 37 31 2 0 0 0 0 1 
    39 598 246 33 29 2 0 0 0 0 1 
    40 740 308 45 33 1 0 0 0 2 1 
    41  .....................

    其中,第一行为图片路径,第二行为框的数量,紧接着是框。

    以此类推。详见Widerface README.md文件。

    source_dir为存储图片的根目录。

    target_dir为画框过后的图片的存储路径。

  • 相关阅读:
    [ios]总结iOS开发当中一些特别注意的问题 【转】
    [ios]Core Data
    [ios]图片转pdf 【转】
    rsync服务的安装与配置
    c# winform及DotnetBar笔记
    我恨博客园
    C#日期格式化(ASP.NET)
    c# winform DatagridView使用总结
    .net2.0数据绑定语法
    div代替window.alert,让这个div显示信息后,在指定之间时间内消失
  • 原文地址:https://www.cnblogs.com/houjun/p/9847866.html
Copyright © 2011-2022 走看看