按yolov3格式裁剪数据集图片并修改相应标签

在运行yolov3算法时,自己的数据集图片太大,如果直接resize成算法输入大小,会破坏原先的RGB结构,所以这里采用裁剪的方式

原本的数据集标签格式为:filename,X1,Y1,X2,Y2,X3,Y3,X4,Y4,type
得到的算法输入标签为:归一化形式的x,y,w,h

import os
import cv2
import csv
import math


def crop(filepath,destpath):
	pathdir=os.listdir(filepath)
	for alldir in pathdir:
		child=os.path.join(filepath,alldir)  #被裁减图片的路径
		dest=os.path.join(destpath,alldir)   #裁减后图片的路径
		if os.path.isfile(child):
			image=cv2.imread(child)
			sp=image.shape
			sz1=int(sp[1])# width-x
			sz2=int(sp[0])# height-y
			#with open('./alter.csv','r') as f:
			with open("./train.csv",'r') as f:  #训练集标签的csv文件,文件中标签格式为:图片名称、4个点坐标,类别
				lines=csv.reader(f)
				for line in lines:
					name=line[0]
					if name==alldir:
						name,x1,y1,x2,y2,x3,y3,x4,y4,x_cen,y_cen,cla=center(line)
           #通过center函数把文档中每行的内容提取出来
						a,b,c,d=right_crop(x1,y1,x2,y4)
           #right_crop函数返回裁减后的各个相应位置
           #下边算出标志在裁剪后图片中的位置
						x1=x1-a
						y1=y1-c
						x2=x3-a
						y2=y3-c
           #
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值