1. 程式人生 > >利用python對WiderFace數據解析及畫框

利用python對WiderFace數據解析及畫框

__name__ for size item 數量 imread class not file

#註:此代碼稍作修改也可以用於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數據解析及畫框