This commit is contained in:
Semi212 committed 2022-04-28 22:02:20 +08:00
1 parent 54ccfb11fe
commit a0818377bb
194 files changed
+41681 -262

No files matched your search

+161
View File
@@ -0,0 +1,161 @@
'''
author : Hatcher W
Email: hcwang@semi.ac.cn
use: 用于检测voc数据集是否正确,
input:(图像的文件夹路径,图像标签文件夹路径)
output:check路径,所有的可视化结果都在里面
'''
import os
import cv2
import xml.dom.minidom
from tqdm import tqdm
from detection import fine_class_names
from Y5.utils.plots import plot_one_box
import numpy as np
from imatovideo import images_to_video,images_to_video_bigtosmall
from cv2AddChineseText import cv2AddChineseText
#BHQ_name = ['Grus_vipio','Grus_leucogeranus','Grus_monacha']
BHQ_name = ["Mallard", "Anas_poecilorhyncha", "Greylag_Goose", "Swan_Goose", "Domestic_goose","Podiceps_ruficollis"]
# CUI BHQ_chinese = ['绿头鸭', '斑嘴鸭', '灰雁', '鸿雁', '家鹅', '小鷿鷈']
BHQ_chinese = ["Mallard", "Anas_poecilorhyncha", "Greylag_Goose", "Swan_Goose", "Domestic_goose","Podiceps_ruficollis"]
#BHQ_chinese = ['白枕鹤', '白鹤', '白头鹤']
#BHQ_chinese = ['White-naped Crane', 'Siberian_crane', 'Hooded_Crane']
image_path="/data1/Hatcher/model/data_MPKFNet/result_raw/hiv00024/"
annotation_path="/data1/Hatcher/model/data_MPKFNet/result_xml/hiv00024Detection/"
save_path ="/data1/Hatcher/model/data_MPKFNet/result/hiv00024Detection-English/"
if not os.path.exists(save_path):
os.makedirs(save_path)
def _check_voc(image_path,annotation_path,save_path):
files_name = os.listdir(image_path)
files_name.sort()
num_image=0
num_count_old = 0
for filename_ in tqdm(files_name):
filename, extension= os.path.splitext(filename_)
#filename=filename.split('__')[0]
img_path =image_path+filename+'.jpg'
xml_path =annotation_path+filename+'.xml'
img = cv2.imread(img_path)
width_or = img.shape[1]
if img is None:
pass
try:
dom = xml.dom.minidom.parse(xml_path)
except:
#os.remove(img_path)
continue
root = dom.documentElement
objects=dom.getElementsByTagName("object")
num_detect = 0
spiec_number = [0 for x in range(0,len(BHQ_name))]
for object in objects:
bndbox = object.getElementsByTagName('bndbox')[0]
xmin = bndbox.getElementsByTagName('xmin')[0]
ymin = bndbox.getElementsByTagName('ymin')[0]
xmax = bndbox.getElementsByTagName('xmax')[0]
ymax = bndbox.getElementsByTagName('ymax')[0]
#print(xmin.childNodes[0].data)
#print(type(xmin.childNodes[0].data))
xmin_data=int(xmin.childNodes[0].data)
ymin_data=int(ymin.childNodes[0].data)
xmax_data=int(xmax.childNodes[0].data)
ymax_data=int(ymax.childNodes[0].data)
xyxy = [xmin_data,ymin_data,xmax_data,ymax_data]
label_name=object.getElementsByTagName('name')[0].childNodes[0].data
if int(label_name) == 99999:
label = f'{int(label_name)}'
else:
label = f'{fine_class_names[int(label_name)]}'
if label in BHQ_name:
label = BHQ_chinese[BHQ_name.index(label)]
spiec_number[BHQ_chinese.index(label)] += 1
else:
label = None
label_name = 0
palette = (2 ** 11 - 1, 2 ** 15 - 1, 2 ** 20 - 1)
colors = [int((p * (int(label_name) ** 2 - int(label_name) + 1)) % 255) for p in palette]
img = plot_one_box(xyxy, img, label=label, color=colors, line_thickness=2)
num_detect += 1
flag=0
if num_image % 10 == 0:
num_count_old = num_detect
spiec_number_old = spiec_number
# if width_or == 2560:
# img = cv2AddChineseText(img, "识别总数: {}只".format(str(num_count_old)), (50, 1200), textColor=(255, 255, 255),
# textSize=40)
# img = cv2AddChineseText(img, "分类识别:", (50, 1250), textColor=(255, 255, 255),
# textSize=40)
# for i in range(len(spiec_number)):
# img = cv2AddChineseText(img, "{}数量:{}只".format(str(BHQ_chinese[i]), str(spiec_number_old[i])),
# (250 + i * 300, 1250), textColor=(255, 255, 255),
# textSize=40)
# if width_or == 1920:
# radio_w = 1920/2560.0
# radio_h = 1080/1440.0
# img = cv2AddChineseText(img, "识别总数: {}只".format(str(num_count_old)), (int(50*radio_w), int(1200*radio_h)), textColor=(255, 255, 255),
# textSize=40)
# img = cv2AddChineseText(img, "分类识别:", (int(50*radio_w), int(1250*radio_h)), textColor=(255, 255, 255),
# textSize=40)
# for i in range(len(spiec_number)):
# img = cv2AddChineseText(img, "{}数量:{}只".format(str(BHQ_chinese[i]), str(spiec_number_old[i])),
# (int(250) + i * int(300), int(1250*radio_h)), textColor=(255, 255, 255),
# textSize=40)
#yingwen dibu
# if width_or == 2560:
# img = cv2AddChineseText(img, "The total number of: {}".format(str(num_count_old)), (50, 1200), textColor=(255, 255, 255),
# textSize=40)
# img = cv2AddChineseText(img, "Number of different spieces:", (50, 1250), textColor=(255, 255, 255),
# textSize=40)
# for i in range(len(spiec_number)):
# img = cv2AddChineseText(img, "{} number:{}".format(str(BHQ_chinese[i]), str(spiec_number_old[i])),
# (250 + i * 300, 1250), textColor=(255, 255, 255),
# textSize=40)
# if width_or == 1920:
# radio_w = 1920/2560.0
# radio_h = 1080/1440.0
# img = cv2AddChineseText(img, "The total number of: {}".format(str(num_count_old)), (int(50*radio_w), int(1200*radio_h)), textColor=(255, 255, 255),
# textSize=40)
#
# for i in range(len(spiec_number)):
# img = cv2AddChineseText(img, "{}:{}".format(str(BHQ_chinese[i]), str(spiec_number_old[i])),
# (int(50*radio_w) + i * int(400), int(1250*radio_h)), textColor=(255, 255, 255),
# textSize=40)
if width_or == 2560:
img = cv2AddChineseText(img, "The total number of: {}".format(str(num_count_old)), (50, 1200), textColor=(255, 255, 255),
textSize=40)
temp_pix = 0
for i in range(len(spiec_number)):
img = cv2AddChineseText(img, "{}:{}".format(str(BHQ_chinese[i]), str(spiec_number_old[i])),
(50 + temp_pix, 1250), textColor=(255, 255, 255),
textSize=40)
temp_pix += len(str(BHQ_chinese[i])) * 27
if i == 0:
temp_pix+=20
if i==1:
temp_pix-=25
if width_or == 1920:
radio_w = 1920/2560.0
radio_h = 1080/1440.0
img = cv2AddChineseText(img, "The total number of: {}".format(str(num_count_old)), (int(50*radio_w), int(1200*radio_h)), textColor=(255, 255, 255),
textSize=40)
for i in range(len(spiec_number)):
img = cv2AddChineseText(img, "{}:{}".format(str(BHQ_chinese[i]), str(spiec_number_old[i])),
(int(50*radio_w) + i * int(400), int(1250*radio_h)), textColor=(255, 255, 255),
textSize=40)
flag=cv2.imwrite(save_path+"{}.jpg".format(filename),img)
if not (flag):
print(filename,"error")
num_image+=1
print("all done ====================================")
CombineVideoRawImgPath = "../data_MPKFNet/result/" + "hiv00024" + "Detection-English"
CombineVideoResultPath = '../data_MPKFNet/result_vedio/' + "hiv00024" + "DetectionEnglish.avi"
_check_voc(image_path,annotation_path,save_path)
images_to_video(CombineVideoRawImgPath, CombineVideoResultPath)
#(int((xmin_data+xmax_data/2)),int((ymin_data+ymax_data)/2))