update
This commit is contained in:
+132
@@ -0,0 +1,132 @@
|
||||
#!/usr/bin/env python3
|
||||
# -*- coding:utf-8 -*-
|
||||
#############################################################
|
||||
# File: annotation.py
|
||||
# Created Date: Saturday February 26th 2022
|
||||
# Author: Chen Xuanhong
|
||||
# Email: chenxuanhongzju@outlook.com
|
||||
# Last Modified: Sunday, 27th February 2022 11:03:58 am
|
||||
# Modified By: Chen Xuanhong
|
||||
# Copyright (c) 2022 Shanghai Jiao Tong University
|
||||
#############################################################
|
||||
|
||||
|
||||
import cv2
|
||||
import os
|
||||
import glob
|
||||
import json
|
||||
|
||||
import argparse
|
||||
|
||||
keytable={
|
||||
"left":2424832,
|
||||
"right":2555904,
|
||||
"up":2490368,
|
||||
"down":2621440,
|
||||
"esc":27,
|
||||
"space":32
|
||||
}
|
||||
|
||||
def str2bool(v):
|
||||
return v.lower() in ('true')
|
||||
|
||||
def getParameters():
|
||||
parser = argparse.ArgumentParser()
|
||||
# general
|
||||
parser.add_argument('--image_dir', type=str, default="G:\\VGGFace2-HQ\\VGGface2_None_norm_512_true_bygfpgan")
|
||||
parser.add_argument('--savetxt', type=str, default="./check_list.txt")
|
||||
parser.add_argument('--winWidth', type=int, default=512)
|
||||
parser.add_argument('--winHeight', type=int, default=512)
|
||||
return parser.parse_args()
|
||||
|
||||
if __name__ == "__main__":
|
||||
config = getParameters()
|
||||
savePath = config.savetxt
|
||||
|
||||
log_txt = "./breakpoint.json"
|
||||
|
||||
|
||||
temp_path = os.path.join(config.image_dir,'*/')
|
||||
pathes = glob.glob(temp_path)
|
||||
dataset = []
|
||||
for dir_item in pathes:
|
||||
join_path = glob.glob(os.path.join(dir_item,'*.jpg'))
|
||||
print("processing %s"%dir_item,end='\r')
|
||||
temp_list = []
|
||||
for item in join_path:
|
||||
temp_list.append(item)
|
||||
dataset.append(temp_list)
|
||||
cv2.namedWindow("Annatation",0)
|
||||
cv2.resizeWindow("Annatation", config.winWidth, config.winHeight)
|
||||
|
||||
font = cv2.FONT_HERSHEY_SIMPLEX
|
||||
try:
|
||||
with open(log_txt,'r') as cf:
|
||||
breakpoint_json = cf.read()
|
||||
breakpoint_json = json.loads(breakpoint_json)
|
||||
if isinstance(breakpoint_json,str):
|
||||
breakpoint_json = json.loads(breakpoint_json)
|
||||
except:
|
||||
breakpoint_json = {"breakpoint":[0,0]}
|
||||
save_point = breakpoint_json["breakpoint"]
|
||||
|
||||
|
||||
total_dir = len(dataset)
|
||||
dir_pointer = save_point[0]
|
||||
indir_pointer = save_point[1]
|
||||
|
||||
|
||||
while(1):
|
||||
try:
|
||||
img = cv2.imread(os.path.join(config.image_dir,dataset[dir_pointer][indir_pointer]))
|
||||
imgshow = cv2.putText(img, "[%d]/[%d]-[%d]/[%d]"%(dir_pointer+1,total_dir,
|
||||
indir_pointer+1,len(dataset[dir_pointer])), (0, 30), font, 0.4, (255, 255, 255), 1)
|
||||
imgshow = cv2.putText(imgshow, "%s"%(dataset[dir_pointer][indir_pointer][-19:]), (0, 60), font, 0.4, (255, 255, 255), 1)
|
||||
cv2.imshow('Annatation',imgshow)
|
||||
waitkey_num = cv2.waitKeyEx(20)
|
||||
# if waitkey_num != -1:
|
||||
# print(waitkey_num)
|
||||
if waitkey_num == keytable["left"]:
|
||||
# print("Left")
|
||||
indir_pointer -= 1
|
||||
if indir_pointer<0:
|
||||
indir_pointer = 0
|
||||
|
||||
if waitkey_num == keytable["right"]:
|
||||
# print("Right")
|
||||
indir_pointer += 1
|
||||
if indir_pointer>= len(dataset[dir_pointer]):
|
||||
indir_pointer = len(dataset[dir_pointer])-1
|
||||
|
||||
if waitkey_num == keytable["up"]:
|
||||
# print("Left")
|
||||
dir_pointer -= 1
|
||||
indir_pointer = 0
|
||||
if dir_pointer<0:
|
||||
dir_pointer = 0
|
||||
|
||||
if waitkey_num == keytable["down"]:
|
||||
# print("Right")
|
||||
dir_pointer += 1
|
||||
indir_pointer = 0
|
||||
if dir_pointer>= total_dir:
|
||||
dir_pointer = total_dir-1
|
||||
|
||||
if waitkey_num == keytable["space"]:
|
||||
image_name_cur = dataset[dir_pointer][indir_pointer][-19:]
|
||||
print("Save image name %s"%image_name_cur)
|
||||
with open(savePath,'a+') as logf:
|
||||
logf.writelines("%s\n"%(image_name_cur))
|
||||
if waitkey_num == keytable["esc"]:
|
||||
breakpoint_json = {"breakpoint":[dir_pointer,indir_pointer]}
|
||||
with open(log_txt, 'w') as cf:
|
||||
configjson = json.dumps(breakpoint_json, indent=4)
|
||||
cf.writelines(configjson)
|
||||
break
|
||||
except KeyboardInterrupt:
|
||||
breakpoint_json = {"breakpoint":[dir_pointer,indir_pointer]}
|
||||
with open(log_txt, 'w') as cf:
|
||||
configjson = json.dumps(breakpoint_json, indent=4)
|
||||
cf.writelines(configjson)
|
||||
break
|
||||
cv2.destroyAllWindows()
|
||||
Reference in New Issue
Block a user