座標x1y1x2y2轉yolo標註格式

# -*- coding:utf-8 -*- 
#作用:
#將圖片標註文件轉化成yolo格式的txt標註文件
#
#
import sys 
import os 
import cv2
import random
data_base_dir = "/root/dyg/test_dir/annots/"
# data_base_dir = "/root/dyg/disc_data/annots" 
file_list = []

for file in os.listdir(data_base_dir): 
    if file.endswith(".txt"):
        # print(file)
        img_name = file[:-4]
        print(file) 
        # print(file[:-4])    #得到圖片名,不帶後綴
        imginfo = cv2.imread('/root/dyg/disc_data/imgs/'+  img_name + '.jpg').shape
        #h = shape[0]  w = shape[1]

        raw_file = open(data_base_dir+file)                    # 返回一個文件對象 
        print('raw_file is '+ data_base_dir +file)  
        new_file = open('/root/dyg/test_dir/result/'+file,'a+')
        line = raw_file.readline()               # 調用文件的 readline()方法   
        while line:   
            print(line)
            line = line.split(" ")
            print(line[1])
            # line[0] = float(line[0])
            x1 = float(line[1])
            print(x1)
            y1 = float(line[2])
            x2 = float(line[3])
            y2 = float(line[4])
            h = imginfo[0]
            w = imginfo[1]
            print('h== '+str(h))
            print('w== '+str(w))

            new_x = str((x1 + x2)/(2*w))
            new_y = str((y1 + y2)/(2*h))

            new_w = str((x2 - x1)/w)
            new_h = str((y2 - y1)/h)

            new_file.write(line[0]+' '+new_x+' '+new_y+' '+new_w+' '+new_h+'\n')
            print(line[0]+' '+new_x+' '+new_y+' '+new_w+' '+new_h+'\n')
            
            # print line                  # 後面跟 ',' 將忽略換行符   
            #print(line, end = '')       # 在 Python 3 中使用   
            line = raw_file.readline()      
new_file.close()
raw_file.close()
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章