VOC标签txt图片实例化图片
我这里用的一个文件夹装GT.txt,一个文件夹装Predict.txt,还有一个文件夹装图片。
三个文件里除了后缀名字一一对应。
例如:
GT & Predict:
2008_003379.txt
JPG:
2008_003379.jpg
import os
import cv2
import pandas
from pathlib import Path
def find_all_files(files_path):
"""遍历指定文件夹所有指定类型文件"""
p = Path(files_path)
files_names = [] # 存储文件路径名称
for file in p.rglob('*.txt'): # 寻找所有txt文件
files_names.append(str(file)) # 以字符串形式保存
return files_names
files_path = r'txt路径' # 文件夹
files_names = find_all_files(files_path) # 获取所有文件路径名称
for i in files_names:
#将遍历好的txt地址分为(绝对地址,名字.txt)
result1 = os.path.split(i)
#将名字.txt拆分为(名字,txt)
result2 = os.path.splitext(result1[1])
#读取txt的内容
def read_tablemethod(filename):
data = pandas.read_table(filename, header=None, delim_whitespace=True,error_bad_lines=False)
return data
if __name__ == "__main__":
data = read_tablemethod(i)
#根据遍历的txt名字找到对应的图片
imgPath = os.path.join(r'图片路径(到文件夹)',result2[0]+str('.jpg'))
img = cv2.imread(imgPath)
font = cv2.FONT_HERSHEY_SIMPLEX # 定义字体
# #红色 预测框-------------------------------------------------
# for x in range(len(data)) :
# xmin = data.iat[x, 2]
# ymin = data.iat[x, 3]
# xmax = data.iat[x, 4]
# ymax = data.iat[x, 5]
# a = data.iat[x, 0]
# b = data.iat[x, 1]
# cv2.rectangle(img, (xmin, ymax), (xmax, ymin), (0, 0, 255), 1)
# imgzi = cv2.putText(img, '{} {:.3f}'.format(a, b), (xmin, ymin), font, 0.5, (0, 255, 255), 1)
# # 图像,文字内容,坐标(右上角坐标) ,字体,大小,颜色,字体厚度
#----------------------------------------------------------------
# 绿色GT-----------------------------------------------------------------
for x in range(len(data)) :
xmin = data.iat[x, 1]
ymin = data.iat[x, 2]
xmax = data.iat[x, 3]
ymax = data.iat[x, 4]
a = data.iat[x, 0]
b = 1
cv2.rectangle(img, (xmin, ymax), (xmax, ymin), (0,255,0), 1)
imgzi = cv2.putText(img, '{} {:.3f}'.format(a,b), (xmin, ymin), font, 0.5, (0, 255, 255), 1)
# 图像,文字内容,坐标(右上角坐标) ,字体,大小,颜色,字体厚度
# ----------------------------------------------------------------------
cv2.waitKey()
#保存地址
img2Path = os.path.join(r'保存路径',
result2[0] + str('.jpg'))
cv2.imwrite(img2Path, img)
其中一张GT.txt
输出结果
预测的txt文件与GT.txt不一样,在类别后面还包括置信度,想用预测的txt实例化图片的话只需要注释掉绿色GT部分、解除注释红色预测部分就可以了。
代码里有详细注释,不多说啦。