1.读入图片
2.旋转图片
3.改变背景颜色
4.抠图
I = imread('0.png');%读取图片for i=1:1:90I_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:90I_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:90if((R(m,j)==0)&&(G(m,j)==0)&&(B(m,j)==0)) %判断像素点三通道颜色全为0的部分,为旋转后填充的像素%R(m,j)=255; %这里可以把背景改为纯红色elseR(m,j)=R(m,j)+1;%图像区域每个像素点+1,把灰度变为非0G(m,j)=G(m,j)+1;B(m,j)=B(m,j)+1;endendendI_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);iend
图片处理前需要先抠一张原图,背景色透明就行。透明背景读进来灰度为0(纯黑)。原图片的图像位置不能有像素点RGB(0,0,0)的情况。
生成完毕的图片可以用WPS的批量处理来进行批量抠图。