import os
import cv2
import numpy as np
gt_path = r'M:\Born-Digital Images\ch1_training_localization_transcription_gt'
img_path = r'M:\Born-Digital Images\Challenge1_Training_Task12_Images'
save_path = r'M:\Born-Digital Images\output'
os.mkdir(save_path)
txt_list = os.listdir(gt_path) #gt文件名列表
cnt = 0
for file_name in txt_list:
cnt += 1
img_name = file_name.replace('gt_','')
img_name = img_name.replace('.txt','.jpg')
path_img = img_path + img_name #图的路径+名字
img = cv2.imread(path_img)
path_txt = gt_path + file_name
with open(path_txt,'r',encoding = 'utf-8') as f:
str = f.readlines() #按行读取gt文件 路径+文件名
# 方框的点
ll_pt = []
for path in str:
path = path.strip() #移除开头和结尾
list_str = path.encode('utf-8').decode('utf-8-sig').split(',')
l_pt = []
l_pt_tmp =[]
for i in range(0,8):
l_pt.append(int(list_str[i]))
if i%2 != 0:
l_pt_tmp.append(l_pt)
l_pt = []
ll_pt.append(l_pt_tmp)
for v_pt in ll_pt:
point = np.array(v_pt,np.int32)
cv2.polylines(img,[point],True,(0,255,255))
cv2.imwrite(save_path+img_name,img_name)
另
import os
import path
import glob
import Image, ImageDraw
# ground truth directory
gt_text_dir = r'M:\Born-Digital Images\ch1_training_localization_transcription_gt'
# original images directory
image_dir = r'M:\Born-Digital Images\Challenge1_Training_Task12_Images'
imgDirs = []
imgLists = glob.glob(image_dir)
# where to save the images with ground truth boxes
imgs_save_dir = r'M:\Born-Digital Images\output'
os.mkdir(imgs_save_dir)
for item in imgLists:
imgDirs.append(item)
for img_dir in imgDirs:
img = Image.open(img_dir)
dr = ImageDraw.Draw(img)
img_basename = os.path.basename(img_dir)
(img_name, temp2) = os.path.splitext(img_basename)
# open the ground truth text file
img_gt_text_name = "gt_" + img_name + ".txt"
print(img_gt_text_name)
bf = open(os.path.join(gt_text_dir, img_gt_text_name)).read().decode("utf-8-sig").encode("utf-8").splitlines()
for idx in bf:
rect = []
spt = idx.split(',')
rect.append(float(spt[0]))
rect.append(float(spt[1]))
rect.append(float(spt[2]))
rect.append(float(spt[3]))
rect.append(float(spt[4]))
rect.append(float(spt[5]))
rect.append(float(spt[6]))
rect.append(float(spt[7]))
# draw the polygon with (x_1, y_1, x_2, y_2, x_3, y_3, x_4, y_4)
dr.polygon((rect[0], rect[1], rect[2], rect[3], rect[4], rect[5], rect[6], rect[7]), outline="red")
img.save(os.path.join(imgs_save_dir, img_basename))