MATLAB旋转后生成透明背景图片

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的批量处理来进行批量抠图。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

琉璃海浪

赏一张兰博基尼1元优惠券

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值