脚本: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来操作图片

全部评论

相关推荐

顺利毕业的鸽子:这个不一定,找hr跟进一下
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务