matlab批量图片旋转处理
我们用于神经网络训练的图片有时候需要自己标记,但比较麻烦,通过一些旋转处理往往可以扩大训练集数目,但是一般我们用一些图像软件处理会使彩色索引图编程RGB图或者灰度图,不能满足我们要求,并且速度比较慢,这里是我用的matlab批量处理原始图像和标记图像程序代码:
clear
path1 ='C:\Users\26594\Desktop\label_images\train_images\images';
path2='C:\Users\26594\Desktop\label_images\train_images\labels';
Files1= dir(strcat(path1));%这是要读取的图像图片的目录
Files2= dir(strcat(path2));%这是要读取的标记图片的目录
j=1;
for i=3:length(Files1) %图像图片的旋转处理
x1=Files1(i).name;%取出第一个文件的名称
x1=['C:\Users\26594\Desktop\label_images\train_images\images\',x1];
[a,b]=imread(x1);
c1=imrotate(a,90);%顺时针旋转90度
k = sprintf('%03d',j);%类似‘0001’为前缀的命名方式,数字依次递增
imwrite(c1,['last_train_images/images/images.',num2str(k),'.png']);
j=j+1;
c2=imrotate(a,-90);%逆时针旋转90度
k = sprintf('%03d',j);%类似‘0001’为前缀的命名方式,数字依次递增
imwrite(c2,['last_train_images/images/images.',num2str(k),'.png']);
j=j+1;
c3=imrotate(a,180);旋转180度
k = sprintf('%03d',j);%类似‘0001’为前缀的命名方式,数字依次递增
imwrite(c3,['last_train_images/images/images.',num2str(k),'.png']);
j=j+1;
k = sprintf('%03d',j);%类似‘0001’为前缀的命名方式,数字依次递增
imwrite(a,['last_train_images/images/images.',num2str(k),'.png']);
j=j+1;
end
j=1;
for i=3:length(Files2) %标记图像的旋转处理
x1=Files2(i).name;%取出第一个文件的名称
x1=['C:\Users\26594\Desktop\label_images\train_images\labels\',x1];
[a,b]=imread(x1);
c1=imrotate(a,90);
k = sprintf('%03d',j);%类似‘0001’为前缀的命名方式,数字依次递增
imwrite(c1,b,['last_train_images/labels/labels.',num2str(k),'.png']);
j=j+1;
c2=imrotate(a,-90);
k = sprintf('%03d',j);%类似‘0001’为前缀的命名方式,数字依次递增
imwrite(c2,b,['last_train_images/labels/labels.',num2str(k),'.png']);
j=j+1;
c3=imrotate(a,180);
k = sprintf('%03d',j);%类似‘0001’为前缀的命名方式,数字依次递增
imwrite(c3,b,['last_train_images/labels/labels.',num2str(k),'.png']);
j=j+1;
k = sprintf('%03d',j);%类似‘0001’为前缀的命名方式,数字依次递增
imwrite(a,b,['last_train_images/labels/labels.',num2str(k),'.png']);
j=j+1;
end