脚本:resize图片同时得到符合新尺寸的标注信息
import cv2
import os.path
import glob
def convertjpg(jpgfile,outdir,width=720,height=1160):
img = cv2.imread(jpgfile)
h,w = img.shape[:2]
img = cv2.resize(img, (width, height))
x = width/w
y = height/h
myiname = jpgfile.split('/')[-1].rsplit('.', 1)[0]
in_file = open('/DATACENTER1/zt/data_LP/LP_RPnet/Annotations/%s.txt' % (myiname))
line = in_file.readline().split()
xmin, ymin, xmax, ymax=int(line[0]), int(line[1]), int(line[2]), int(line[3])
# xmin, ymin, xmax, ymax分别为xml读取的坐标信息
newxmin=int(xmin*x)
newymin=int(ymin*y)
newxmax=int(xmax*x)
newymax=int(ymax*y)
out_file = open('LP_RPnet/resize/Annotations/%s.txt' % (myiname), 'w')
out_file.write(str(newxmin)+' '+str(newymin)+' '+str(newxmax)+' '+str(newymax))
print("saving "+myiname)
cv2.imwrite(outdir+"/%s.jpg"%(myiname),img)
# xmin, ymin, xmax, ymax分别为xml读取的坐标信息
tl = (int(xmin*x), int(ymin*y))
br= (int(xmax*x), int(ymax*y))
cv2.rectangle(img, tl, br, (255, 0, 0), 1) #画出新的框
if myiname == "CD253_22FC6110": #测试一下框的对不对
cv2.imwrite("/DATACENTER1/zt/test.jpg",img)
for jpgfile in glob.glob("LP_RPnet/Images/test/*.jpg"):
convertjpg(jpgfile,"LP_RPnet/resize/test")主要参考:https://blog.csdn.net/xiaoshulinlove/article/details/105571550
同时注意,尽量使用opencv来操作图片
