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为画框过后的图片的存储路径。

  • 相关阅读:
    jQuery 语法
    jQuery 简介
    把数据存储到 XML 文件
    XML 注意事项
    XML DOM (Document Object Model) 定义了访问和操作 XML 文档的标准方法。
    通过 PHP 生成 XML
    XML 命名空间(XML Namespaces)
    XML to HTML
    XMLHttpRequest 对象
    使用 XSLT 显示 XML
  • 原文地址:https://www.cnblogs.com/houjun/p/9847866.html
Copyright © 2011-2022 走看看