def read_class_names():
"""
loads class name from a file
加载id和类别名称映射关系,文件中是每行一个类别名称
"""
names = {}
names2 = {}
with open(r'.\Data3\classes_xinpian.txt', 'r') as data:
for ID, name in enumerate(data):
names[name.strip('\n')] = ID
names2[ID]=name.strip('\n')
print(names2)
return names,names2
import os
import cv2
def test_yolo():
for i in os.listdir(r".\Data3\labels"):
text_path=os.path.join(r".\Data3\labels",i)
image_path=text_path.replace("labels","PIC").replace("txt","bmp")
# image_path=r".\Data3\PIC\123456.bmp"
# img = cv2.imread(image_path)
print(image_path)
img = cv2.imread(image_path)
img_height, img_width = cv2.imread(image_path).shape[0], cv2.imread(image_path).shape[1]
print(img_height, img_width)
_,names2=read_class_names()
with open(text_path, "r") as fd:
datas = fd.readlines()
for data in datas:
if len(data) > 1:
data_list=data.strip('\n').split(' ')
center_x = round(float(data_list[1]) * img_width)
center_y = round(float(data_list[2]) * img_height)
bbox_width = round(float(data_list[3]) * img_width)
bbox_height = round(float(data_list[4]) * img_height)
x_min = str(int(center_x - bbox_width / 2))
y_min = str(int(center_y - bbox_height / 2))
x_max = str(int(center_x + bbox_width / 2))
y_max = str(int(center_y + bbox_height / 2))
label =names2[int(data_list[0])]
print(label)
print(x_min,y_min,x_max,y_max,label)
#
cv2.putText(img,label,(int(x_min),int(y_min)-2),0,1,[255,255,255])
cv2.rectangle(img, (int(x_min), int(y_min)), (int(x_max), int(y_max)), (255, 0, 0), 2)
cv2.namedWindow('img', 0)
cv2.resizeWindow('img', int(1920), int(1680))
cv2.imshow('img', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
test_yolo()
# with open(,"r") as fd:
01-29
1394

03-21
6145

09-16
3560
