怎么利用Matlab一键生成工地海报特效
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,本篇内容介绍了"怎么利用Matlab一键生成工地海报特效"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成
千家信息网最后更新 2026年11月01日怎么利用Matlab一键生成工地海报特效
本篇内容介绍了"怎么利用Matlab一键生成工地海报特效"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
1.使用效果
2.图片准备和导入
首先m文件所在文件夹内应该有如下两张图:
此外还需要一张近似方形的图片也要一起放在文件夹中,之后通过以下代码导入和初步处理图片(选择幕布部分和去色代码,可左右滑动):
bkgPic=imread('bkg.jpg'); % 背景图screenPic=bkgPic(190:555,(190:555)+160,:);% 幕布区域图片grayscreenPic=rgb2gray(screenPic); % 灰度化幕布区域图片screenRange=imread('screenRange.jpg'); % 幕布范围图(用来扣幕布边缘细节)screenRange=rgb2gray(screenRange);forePic=imread('2048.jpg'); % 要做成海报的图片3.图像倾斜
我们可以看出幕布是有些倾斜的,我们为了让图片和幕布更加贴近,我们将图片进行倾斜处理并将其调整至与幕布区域相似的大小:
% 前景图片变形=============================================================tform=affine2d([1 -0.02 0;-0.02 1 0; 0 0 1]);forePic=imwarp(forePic,tform);exforePic=imresize(forePic,size(grayscreenPic)+26);
4.扭曲置换
这部分参考之前布料贴图的部分呀:
% 扭曲置换=================================================================for i=1:size(grayscreenPic,1) for j=1:size(grayscreenPic,2) goffset=(double(grayscreenPic(i,j))-128)/10; offsetLim1=floor(goffset)+13; offsetLim2=ceil(goffset)+13; sep1=goffset-floor(goffset); sep2=ceil(goffset)-goffset; c1=double(exforePic(i+offsetLim1,j+offsetLim1,:)); c2=double(exforePic(i+offsetLim2,j+offsetLim2,:)); if sep1==0 c=double(exforePic(i+offsetLim1,j+offsetLim1,:)); else c=c2.*sep1+c1.*sep2; end newforePic(i,j,:)=c; endend
5.正交叠底
% 正交叠底=================================================================newforePic=uint8((double(newforePic).*double(grayscreenPic))./220);% imshow(newforePic)% 旧版本的用下面这段代码% newforePicR=double(newforePic(:,:,1)).*double(grayscreenPic)./220;% newforePicG=double(newforePic(:,:,2)).*double(grayscreenPic)./220;% newforePicB=double(newforePic(:,:,3)).*double(grayscreenPic)./220;% newforePic(:,:,1)=newforePicR;% newforePic(:,:,2)=newforePicG;% newforePic(:,:,3)=newforePicB;% newforePic=uint8(newforePic);
6.缘修整(抠图)
上方正交叠底后,幕布外面还是灰色,而且幕布内容部分超出幕布范围,我们可以用幕布范围图修整幕布:
% 边缘修整=================================================================screenPicR=screenPic(:,:,1);newforePicR=newforePic(:,:,1);screenPicG=screenPic(:,:,2);newforePicG=newforePic(:,:,2);screenPicB=screenPic(:,:,3);newforePicB=newforePic(:,:,3);screenPicR(screenRange>20)=newforePicR(screenRange>20);screenPicG(screenRange>20)=newforePicG(screenRange>20);screenPicB(screenRange>20)=newforePicB(screenRange>20);screenPic(:,:,1)=screenPicR;screenPic(:,:,2)=screenPicG;screenPic(:,:,3)=screenPicB;screenPic=uint8(screenPic);
7.背景图像替换
% 将背景图幕布区域换为新图=================================================bkgPic(190:555,(190:555)+160,:)=screenPic;imshow(bkgPic)
8.完整代码
function consPosterbkgPic=imread('bkg.jpg'); % 背景图screenPic=bkgPic(190:555,(190:555)+160,:);% 幕布区域图片grayscreenPic=rgb2gray(screenPic); % 灰度化幕布区域图片screenRange=imread('screenRange.jpg'); % 幕布范围图(用来扣幕布边缘细节)screenRange=rgb2gray(screenRange);forePic=imread('2048.jpg'); % 要做成海报的图片% 前景图片变形=============================================================tform=affine2d([1 -0.02 0;-0.02 1 0; 0 0 1]);forePic=imwarp(forePic,tform);exforePic=imresize(forePic,size(grayscreenPic)+26);% 扭曲置换=================================================================for i=1:size(grayscreenPic,1) for j=1:size(grayscreenPic,2) goffset=(double(grayscreenPic(i,j))-128)/10; offsetLim1=floor(goffset)+13; offsetLim2=ceil(goffset)+13; sep1=goffset-floor(goffset); sep2=ceil(goffset)-goffset; c1=double(exforePic(i+offsetLim1,j+offsetLim1,:)); c2=double(exforePic(i+offsetLim2,j+offsetLim2,:)); if sep1==0 c=double(exforePic(i+offsetLim1,j+offsetLim1,:)); else c=c2.*sep1+c1.*sep2; end newforePic(i,j,:)=c; endend% 正交叠底=================================================================newforePic=uint8((double(newforePic).*double(grayscreenPic))./220);% imshow(newforePic)% 旧版本的用下面这段代码% newforePicR=double(newforePic(:,:,1)).*double(grayscreenPic)./220;% newforePicG=double(newforePic(:,:,2)).*double(grayscreenPic)./220;% newforePicB=double(newforePic(:,:,3)).*double(grayscreenPic)./220;% newforePic(:,:,1)=newforePicR;% newforePic(:,:,2)=newforePicG;% newforePic(:,:,3)=newforePicB;% newforePic=uint8(newforePic);% 边缘修整=================================================================screenPicR=screenPic(:,:,1);newforePicR=newforePic(:,:,1);screenPicG=screenPic(:,:,2);newforePicG=newforePic(:,:,2);screenPicB=screenPic(:,:,3);newforePicB=newforePic(:,:,3);screenPicR(screenRange>20)=newforePicR(screenRange>20);screenPicG(screenRange>20)=newforePicG(screenRange>20);screenPicB(screenRange>20)=newforePicB(screenRange>20);screenPic(:,:,1)=screenPicR;screenPic(:,:,2)=screenPicG;screenPic(:,:,3)=screenPicB;screenPic=uint8(screenPic);% imshow(screenPic)% 将背景图幕布区域换为新图=================================================bkgPic(190:555,(190:555)+160,:)=screenPic;imshow(bkgPic)end"怎么利用Matlab一键生成工地海报特效"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!
幕布
图片
区域
代码
背景
海报
范围
边缘
内容
文件
部分
置换
工地
特效
一键
生成
前景
图像
文件夹
更多
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
南京欣网互联网络科技
小米移动互联网科技园
天津市摩尔互联网科技
互联网科技公司的优势
科技互联网项目
互联网品科技
互联网科技开发公司
互联网的科技创新
互联网与新科技
阿里互联网科技公司
彤创互联网科技有限公司
浙南科技城互联网大厦建设工程
济南有互联网科技公司吗
徐州市互联网科技有限公司
中和天地互联网科技有限公司
互联网科技圈年度人物
半导体行业属于互联网高科技类吗
南京一网一红互联网科技有限公司
艺电能源互联网科技有限公司招聘
兰石爱特工业互联网科技分公司
上海挚品互联网科技有限公司
美国互联网科技
互联网科技的英文
杭州壁岐互联网科技有限公司
互联网科技研发水平
浙南科技城互联网大厦招聘
互联网科技包装股
银川新华互联网科技学校原画
好易买互联网科技
互联网对科技影响