1.读入图片
2.旋转图片
3.改变背景颜色
4.抠图
I = imread('0.png');%读取图片
for i=1:1:90
I_rotating = imrotate(I,i*-1,'bilinear','crop');%旋转图片
I_rotating(I_rotating==0)=200; %灰度为0的像素点改为200,方便抠图
outputFile=[num2str(i),'.png'];
imwrite(I_rotating,outputFile);
i%查看生成到第几张图片了
end
把灰度为0(黑色)的像素点改为200。可以改成别的,或通过RGB通道改为红色背景。一定要和原图有明显差异,方便抠图软件自动扣图。
I = imread('0.png');
for i=1:1:90
I_rotating = imrotate(I,i*-1,'bilinear','crop');
%I_rotating(I_rotating==0)=200; %图片中有大量灰度为0的像素点,不能直接改灰度
R=I_rotating(:,:,1);%读取RGB通道数据
G=I_rotating(:,:,2);
B=I_rotating(:,:,3);
for m=1:90 %图片是90*90的
for j=1:90
if((R(m,j)==0)&&(G(m,j)==0)&&(B(m,j)==0)) %判断像素点三通道颜色全为0的部分,为旋转后填充的像素
%R(m,j)=255; %这里可以把背景改为纯红色
else
R(m,j)=R(m,j)+1;%图像区域每个像素点+1,把灰度变为非0
G(m,j)=G(m,j)+1;
B(m,j)=B(m,j)+1;
end
end
end
I_rotating(:,:,1)=R(:,:);%重新还原图片
I_rotating(:,:,2)=G(:,:);
I_rotating(:,:,3)=B(:,:);
%I_rotating(I_rotating==0)=200; %灰度为零部分改为200,如果通过像RGB判断把背景改过了就不需要这个
outputFile=[num2str(i),'.png'];
imwrite(I_rotating,outputFile);
i
end
图片处理前需要先抠一张原图,背景色透明就行。透明背景读进来灰度为0(纯黑)。原图片的图像位置不能有像素点RGB(0,0,0)的情况。
生成完毕的图片可以用WPS的批量处理来进行批量抠图。