利用python对WiderFace数据解析及画框

Posted HOU_JUN

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了利用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为画框过后的图片的存储路径。

 





以上是关于利用python对WiderFace数据解析及画框的主要内容,如果未能解决你的问题,请参考以下文章

极智数据 | 人脸检测数据集widerface

win10下用yolov3训练WiderFace数据集来实现人脸检测(TensorFlow版本,darkface作为测试集)

win10下用yolov3训练WiderFace数据集来实现人脸检测(TensorFlow版本,darkface作为测试集)

YOLO3训练widerface数据集

Python安装BeautifulSoup及使用方法,利用BeautifulSoup解析html网页

Python爬虫学习实践基于Beautiful Soup的网站解析及数据可视化