Panoramic
This commit is contained in:
1 parent
a0818377bb
commit
897af7ce56
117 files changed
+79
-124
No files matched your search
+60
-110
@@ -2,15 +2,12 @@ import xml.dom.minidom
|
||||
from tqdm import tqdm
|
||||
from glob import glob
|
||||
import cv2
|
||||
import os
|
||||
from PIL import Image
|
||||
import os,argparse
|
||||
import numpy as np
|
||||
from jpg import jpg
|
||||
txt_root_path = "/data/DataManagement/Project/005_kunmingdianchi/0002_20220412_800_200/Dataset/VOC0050201"
|
||||
#xml_files = glob('./temp2/*.xml')
|
||||
image_T = 50
|
||||
num_count = 0
|
||||
root_path = "/data/DataManagement/Project/005_kunmingdianchi/0002_20220412_800_200/Dataset/VOC0050201/Annotations/"
|
||||
|
||||
class_name = ["Anser albifrons" ,"Fulica atra" ,"Leucogeranus leucogeranus" ,"Egretta garzetta","Platalea leucorodia" ,"Mergellus albellus" ,"Grus monacha" ,"Tringa ochropus" ,"Numenius arquata" ,"Anser indicus","Anas zonorhyncha","Ardea cinerea","Mareca strepera" ,"Mareca penelope" ,"Tadorna ferruginea","Ardea alba","Numenius madagascariensis" ,"Botaurus stellaris" ,"Ciconia boyciana" ,"Anser fabalis" ,"Recurvirostra avosetta" ,"Podiceps cristatus","Vanellus vanellus" ,"Aythya fuligula" ,"Tringa erythropus","Calidris alpina" ,"Ciconia nigra" ,"Gallinula chloropus","Porphyrio poliocephalus","Larus ridibundus" ,"Anser cygnoides" ,"Charadrius alexandrinusw" ,"Pluvialis squatarola" ,"Grus grus" ,"Anser anser" ,"Pluvialis fulva" ,"Charadrius dubius" ,"Anas crecca","Anas platyrhynchos","Spatula clypeata","Phalacrocorax carbo","Mergus merganser" ,"Tadorna tadorna" ,"Tringa nebulariaw","Bucephala clangula" ,"Gallinago gallinago" ,"Anser erythropus","Cygnus columbianus" ,"Ichthyaetus ichthyaetus","Anas acuta" ,"Ardea intermedia"]
|
||||
def cv2_crop(im, box):
|
||||
'''cv2实现类似PIL的裁剪
|
||||
|
||||
@@ -32,111 +29,64 @@ def convert(size, box):
|
||||
h = h*dh
|
||||
return (x,y,w,h)
|
||||
|
||||
# for xml_path in os.listdir(root_path):
|
||||
# xml_files = glob(os.path.join(root_path,xml_path,"*.xml"))
|
||||
# print(os.path.join(root_path.replace("xml","image"),xml_path))
|
||||
# jpg(os.path.join(root_path.replace("xml","image"),xml_path))
|
||||
# f = open("./Hatcher_ALL.txt", "a")
|
||||
# txt_lists = []
|
||||
# for xml_file in tqdm(xml_files):
|
||||
#
|
||||
# print(xml_file+" is doing")
|
||||
# DOMTree = xml.dom.minidom.parse(xml_file)
|
||||
# collection = DOMTree.documentElement
|
||||
# #img_name = collection.getElementsByTagName("filename")[0].childNodes[0].data
|
||||
# img_name = xml_file.replace("\\xml\\","\\image\\").replace(".xml",".jpg")
|
||||
# objects = collection.getElementsByTagName("object")
|
||||
# #img = cv2.imread(img_name)
|
||||
# img = cv2.imdecode(np.fromfile(img_name,dtype=np.uint8),-1)
|
||||
# #cv2.imwrite(img_name,img)
|
||||
# #img = cv2.imdecode(np.fromfile(img_name,dtype=np.uint8),-1)
|
||||
# # im = Image.open(img_name)
|
||||
# # im.save(img_name, quality=100)
|
||||
# # im = Image.open(img_name)
|
||||
# for object_id in objects:
|
||||
# xmin = object_id.getElementsByTagName('bndbox')[0].getElementsByTagName('xmin')[0].childNodes[0].data
|
||||
# ymin = object_id.getElementsByTagName('bndbox')[0].getElementsByTagName('ymin')[0].childNodes[0].data
|
||||
# xmax = object_id.getElementsByTagName('bndbox')[0].getElementsByTagName('xmax')[0].childNodes[0].data
|
||||
# ymax = object_id.getElementsByTagName('bndbox')[0].getElementsByTagName('ymax')[0].childNodes[0].data
|
||||
# name = object_id.getElementsByTagName('name')[0].childNodes[0].data
|
||||
# xmin = int(xmin)
|
||||
# xmax = int(xmax)
|
||||
# ymin = int(ymin)
|
||||
# ymax = int(ymax)
|
||||
# class_index = class_name.index(str(name).replace("\t","").strip())
|
||||
# img1 = cv2_crop(img,(xmin, ymin,xmax, ymax))
|
||||
# cv2.imwrite("H:\\Fine-grained-identification\\2021.3.25\Hatcher_One\\" + str(name).replace("\t","").strip().replace(" ","_" )+"_{}.jpg".format(num_count), img1)
|
||||
# txt_lists.append(str(name).replace("\t","").strip().replace(" ","_" )+"_{}.jpg".format(num_count)+" "+str(class_index)+'\n')
|
||||
# #f.write(str(name).replace("\t","").strip().replace(" ","_" )+"_{}.jpg".format(num_count)+" "+str(class_index)+'\n')
|
||||
# num_count += 1
|
||||
# for txt_list in txt_lists:
|
||||
# f.write(txt_list)
|
||||
# f.close()
|
||||
# f_num = open("./num.txt", "w")
|
||||
# f_num.write(str(num_count))
|
||||
# f_num.close()
|
||||
# print(num_count)
|
||||
# for xml_file in tqdm(xml_files):
|
||||
# os.remove(xml_file)
|
||||
#
|
||||
# #os.remove(xml_file)
|
||||
# print(num_count)
|
||||
def VocToFineWithLabel(num_count,root_path,image_T):
|
||||
xml_files = glob(os.path.join(root_path,"*.xml"))
|
||||
jpg(os.path.join(root_path.replace("Annotations","JPEGImages")))
|
||||
txt_lists = []
|
||||
for xml_file in tqdm(xml_files):
|
||||
|
||||
xml_files = glob(os.path.join(root_path,"*.xml"))
|
||||
#print(os.path.join(root_path.replace("Annotations","JPEGImages")))
|
||||
jpg(os.path.join(root_path.replace("Annotations","JPEGImages")))
|
||||
f = open(txt_root_path+"/Hatcher_ALL.txt", "a")
|
||||
txt_lists = []
|
||||
for xml_file in tqdm(xml_files):
|
||||
#print(xml_file+" is doing")
|
||||
DOMTree = xml.dom.minidom.parse(xml_file)
|
||||
collection = DOMTree.documentElement
|
||||
#img_name = collection.getElementsByTagName("filename")[0].childNodes[0].data
|
||||
img_name = xml_file.replace("Annotations","JPEGImages").replace(".xml",".jpg")
|
||||
objects = collection.getElementsByTagName("object")
|
||||
#img = cv2.imread(img_name)
|
||||
img = cv2.imdecode(np.fromfile(img_name,dtype=np.uint8),-1)
|
||||
#cv2.imwrite(img_name,img)
|
||||
#img = cv2.imdecode(np.fromfile(img_name,dtype=np.uint8),-1)
|
||||
# im = Image.open(img_name)
|
||||
# im.save(img_name, quality=100)
|
||||
# im = Image.open(img_name)
|
||||
for object_id in objects:
|
||||
xmin = object_id.getElementsByTagName('bndbox')[0].getElementsByTagName('xmin')[0].childNodes[0].data
|
||||
ymin = object_id.getElementsByTagName('bndbox')[0].getElementsByTagName('ymin')[0].childNodes[0].data
|
||||
xmax = object_id.getElementsByTagName('bndbox')[0].getElementsByTagName('xmax')[0].childNodes[0].data
|
||||
ymax = object_id.getElementsByTagName('bndbox')[0].getElementsByTagName('ymax')[0].childNodes[0].data
|
||||
name = object_id.getElementsByTagName('name')[0].childNodes[0].data
|
||||
ratio_x = (3840.0/3840.0)
|
||||
ratio_y = (2160.0/2160.0)
|
||||
#print(ratio_x," ",ratio_y)
|
||||
#print(type(xmin))
|
||||
#exit()
|
||||
xmin = int(float(xmin)*ratio_x)
|
||||
xmax = int(float(xmax)*ratio_x)
|
||||
ymin = int(float(ymin)*ratio_y)
|
||||
ymax = int(float(ymax)*ratio_y)
|
||||
if ((xmax - xmin)<image_T) | ((ymax - ymin)<image_T):
|
||||
continue
|
||||
img1 = cv2_crop(img,(xmin, ymin,xmax, ymax))
|
||||
if not os.path.exists(os.path.join(root_path.replace("Annotations","FineDataset_{}".format(str(image_T))),str(name).replace("\t","").strip())):
|
||||
os.makedirs(os.path.join(root_path.replace("Annotations","FineDataset_{}".format(str(image_T))),str(name).replace("\t","").strip()))
|
||||
cv2.imwrite(os.path.join(root_path.replace("Annotations","FineDataset_{}".format(str(image_T))),str(name).replace("\t","").strip(),"{}.jpg".format(str(num_count).zfill(5))), img1)
|
||||
#txt_lists.append(str(name).replace("\t","").strip()+"{}.jpg".format(str(num_count).zfill(5))+" "+str(class_index)+'\n')
|
||||
#f.write(str(name).replace("\t","").strip().replace(" ","_" )+"_{}.jpg".format(num_count)+" "+str(class_index)+'\n')
|
||||
num_count += 1
|
||||
print(num_count)
|
||||
# for xml_file in tqdm(xml_files):
|
||||
# os.remove(xml_file)
|
||||
|
||||
#print(xml_file+" is doing")
|
||||
DOMTree = xml.dom.minidom.parse(xml_file)
|
||||
collection = DOMTree.documentElement
|
||||
#img_name = collection.getElementsByTagName("filename")[0].childNodes[0].data
|
||||
img_name = xml_file.replace("Annotations","JPEGImages").replace(".xml",".jpg")
|
||||
objects = collection.getElementsByTagName("object")
|
||||
#img = cv2.imread(img_name)
|
||||
img = cv2.imdecode(np.fromfile(img_name,dtype=np.uint8),-1)
|
||||
#cv2.imwrite(img_name,img)
|
||||
#img = cv2.imdecode(np.fromfile(img_name,dtype=np.uint8),-1)
|
||||
# im = Image.open(img_name)
|
||||
# im.save(img_name, quality=100)
|
||||
# im = Image.open(img_name)
|
||||
for object_id in objects:
|
||||
xmin = object_id.getElementsByTagName('bndbox')[0].getElementsByTagName('xmin')[0].childNodes[0].data
|
||||
ymin = object_id.getElementsByTagName('bndbox')[0].getElementsByTagName('ymin')[0].childNodes[0].data
|
||||
xmax = object_id.getElementsByTagName('bndbox')[0].getElementsByTagName('xmax')[0].childNodes[0].data
|
||||
ymax = object_id.getElementsByTagName('bndbox')[0].getElementsByTagName('ymax')[0].childNodes[0].data
|
||||
name = object_id.getElementsByTagName('name')[0].childNodes[0].data
|
||||
ratio_x = (3840.0/3840.0)
|
||||
ratio_y = (2160.0/2160.0)
|
||||
#print(ratio_x," ",ratio_y)
|
||||
#print(type(xmin))
|
||||
#exit()
|
||||
xmin = int(float(xmin)*ratio_x)
|
||||
xmax = int(float(xmax)*ratio_x)
|
||||
ymin = int(float(ymin)*ratio_y)
|
||||
ymax = int(float(ymax)*ratio_y)
|
||||
if ((xmax - xmin)<image_T) | ((ymax - ymin)<image_T):
|
||||
continue
|
||||
#class_index = class_name.index(str(name).replace("\t","").strip())
|
||||
img1 = cv2_crop(img,(xmin, ymin,xmax, ymax))
|
||||
if not os.path.exists(os.path.join(root_path.replace("Annotations","FineDataset_{}".format(str(image_T))),str(name).replace("\t","").strip())):
|
||||
os.makedirs(os.path.join(root_path.replace("Annotations","FineDataset_{}".format(str(image_T))),str(name).replace("\t","").strip()))
|
||||
cv2.imwrite(os.path.join(root_path.replace("Annotations","FineDataset_{}".format(str(image_T))),str(name).replace("\t","").strip(),"{}.jpg".format(str(num_count).zfill(5))), img1)
|
||||
#txt_lists.append(str(name).replace("\t","").strip()+"{}.jpg".format(str(num_count).zfill(5))+" "+str(class_index)+'\n')
|
||||
#f.write(str(name).replace("\t","").strip().replace(" ","_" )+"_{}.jpg".format(num_count)+" "+str(class_index)+'\n')
|
||||
num_count += 1
|
||||
for txt_list in txt_lists:
|
||||
f.write(txt_list)
|
||||
f.close()
|
||||
f_num = open("./num.txt", "w")
|
||||
f_num.write(str(num_count))
|
||||
f_num.close()
|
||||
print(num_count)
|
||||
# for xml_file in tqdm(xml_files):
|
||||
# os.remove(xml_file)
|
||||
#os.remove(xml_file)
|
||||
print(num_count)
|
||||
if __name__ == '__main__':
|
||||
print("Starting dealing......")
|
||||
parser1 = argparse.ArgumentParser(description="GYD")
|
||||
parser1.add_argument("image_T", default='0001', type=str,
|
||||
help='Video name.')
|
||||
parser1.add_argument("root_path", default='5', type=str,
|
||||
help='GPU.')
|
||||
args = parser1.parse_args()
|
||||
num_count = 0
|
||||
VocToFineWithLabel(num_count,args.root_path, int(args.image_T))
|
||||
|
||||
#os.remove(xml_file)
|
||||
print(num_count)
|
||||
|
||||
Reference in new issue
Block a user