shell脚本批量生成文件并重命名
最近接到一个数据集标注的任务,使用的标注工具是LabelImg。使用前配置了环境Anaconda python=3.7 Linux,并在该环境下配置了pyqt5。
数据集里的图片是一段视频逐帧抽图,要求在图片中用方框框出要找的物体。由于是逐帧抽取,且要找的物体在很多图片中没有发生位置变化,因此在标注过程中希望写一个脚本进行批量处理。
LabelImg YOLO模式下每标记完一张图片,都会在指定位置生成一个相同名称的txt文件,记录了类别和位置信息(左上角和右下角的坐标)。数据集中的图片名称都是按顺序排列的数字字符名称,如:01222.jpg, 01223.jpg…标记后产生的标注文件则为:01222.txt, 01223.txt…如果复制其中的某一txt文件并重命名,如复制标注好的01223.txt为01224.txt,则在LabelImg的01224.jpg文件上也会显示与01223.jpg相同的标记。根据这一原理,如果连续若干张图片物体的位置都没有移动,就可以只标记一张图片,后面相同的就用脚本批量复制并重命名。
直接放代码。
#!/bin/bash
echo "batch copy..."
i=1
F=01223
R=$F
while [ $i -le 328 ]
do
R=`expr $R + 1`
cp -prvf $F.txt 0$R.txt
i=`expr $i + 1`
done
F是开始文件的文件名, -le后面的数字是需要生成标注文件的数量。
0$R里面的0是因为文件以0开头,以数字类型处理时会被去掉,所以要补上。这个要根据实际情况修改。