在进行yolo 标签 坐标 图片路径的获取程序

 

a代表的是xml的文档目录

b代表的是图片存储的路径

labels = ['aeroplane', 'bicycle', 'bird', 'boat', 'bottle', 'bus',
           'car', 'cat', 'chair', 'cow', 'diningtable', 'dog', 'horse',
           'motorbike', 'person', 'pottedplant', 'sheep', 'sofa',
           'train', 'tvmonitor']

需要的标签名字

def ext(ix,aa):
    annotation=ix
    for line in open(aa) :
            #print('line=',line)
            if '<name>' in line:
                for i in range( len(labels ) ) :
                    if labels [i] in line:
                        labelid = str(i)
                        #print(labelid,'labelid')
                        break
            if '<xmin>' in line:
                begin = line.find( '<xmin>')
                #print('begin=',begin)
                end = line.find ( '</xmin>')
                xmin = line[begin+6:end]
            if '<ymin>' in line:
                begin = line.find( '<ymin>')
                end = line.find ( '</ymin>')
                ymin = line [begin+6:end]
            if '<xmax>' in line:
                begin = line.find ('<xmax>')
                end = line.find( '</xmax>')
                
                xmax = line [begin+6:end]
            if '<ymax>' in line:
                begin = line.find( 'ymax>')
                end = line.find ( '</ymax>')
                ymax = line [begin+6: end]
            
                result = xmin+','+ymin+','+xmax+','+ymax+','+labelid
                #xxx.append(result)
                
                annotation = annotation + ' ,'+','.join([xmin, ymin, xmax, ymax, str(labelid)])
    return  annotation          
 


r=open('1.txt','w')
for ix in xx:
    ee=ix.split('/')[-1]
    #print(ee)
    ee1=ee.split('.')[0]
    #print(ee1)
    
    aa=a+ee1+'.xml'
    ee=ext(ix,aa)
    print(ee)
    r.write(ee+'\n')
 

 

图 d代表的生成的结果 

import  random 
import os
a=r'D:/VOC/test/VOCdevkit/VOC2007/Annotations/'
b=r'D:/VOC/test/VOCdevkit/VOC2007/JPEGImages/'
e=os.listdir(b)


xx1=[]
for i in e[1:10]:
    print(i)
    xx1.append(b+i)
代表获得图像路径的程序

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
以下是一个 Python 程序,可以将图片旋转指定角度后,相应地调整 YOLO 标签中的坐标。 ```python import cv2 import math # 旋转图片并调整 YOLO 标签 def rotate_image_and_labels(img_path, label_path, angle): # 读取图片 img = cv2.imread(img_path) # 计算旋转后的图片大小和中心点 height, width = img.shape[:2] center_x, center_y = width / 2, height / 2 new_width = int(abs(width * math.cos(angle)) + abs(height * math.sin(angle))) new_height = int(abs(width * math.sin(angle)) + abs(height * math.cos(angle))) # 旋转图片 M = cv2.getRotationMatrix2D((center_x, center_y), angle, 1.0) rotated_img = cv2.warpAffine(img, M, (new_width, new_height)) # 保存旋转后的图片 cv2.imwrite('rotated.jpg', rotated_img) # 读取标签文件并调整坐标 with open(label_path, 'r') as f: labels = f.readlines() new_labels = [] for label in labels: label = label.strip().split(' ') x, y, w, h = float(label[1]), float(label[2]), float(label[3]), float(label[4]) # 计算坐标变换后的新坐标 new_x = (x - center_x) * math.cos(angle) + (y - center_y) * math.sin(angle) + new_width / 2 new_y = -(x - center_x) * math.sin(angle) + (y - center_y) * math.cos(angle) + new_height / 2 new_w = w * math.cos(angle) + h * math.sin(angle) new_h = h * math.cos(angle) + w * math.sin(angle) # 将新坐标保存到新标签列表中 new_label = label[0] + ' ' + str(new_x) + ' ' + str(new_y) + ' ' + str(new_w) + ' ' + str(new_h) + '\n' new_labels.append(new_label) # 保存新标签文件 with open('rotated.txt', 'w') as f: f.writelines(new_labels) ``` 该程序接受三个参数:原始图片路径YOLO 标签文件路径和旋转角度。程序会先将图片旋转指定角度,然后读取标签文件中的坐标,并根据图片旋转后的变换公式计算出新的坐标,最后保存旋转后的图片和新的标签文件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值