Matlab利用现有模板图换背景

您所在的位置:网站首页 如何批量抠图换背景图 Matlab利用现有模板图换背景

Matlab利用现有模板图换背景

2024-07-10 02:10| 来源: 网络整理| 查看: 265

原理介绍

现在有三张图,有人物的图、二值的模板图(即我们要换图的模板,有目标板块)、一张背景图,如下在这里插入图片描述

在这里插入图片描述 在这里插入图片描述 我们的目标是将人物图的背景换成第三张图的背景。 抠图换背景的原理   利用模板图(第二张二值图)将目标人物抠出,再将背景图中相应位置的值改为目标人物的值。   原理可能理解比较难,但代码实现很简单。在遍历背景图的双重循环中,判断当前位置是否为目标区域,如是,则令背景图当前位置的值等于人物图的相应位置的值。

代码实现 trimap = imread('trimap.png'); background = imread('background-small.png'); person = imread('input-small.png'); [m,n,~] = size(background); for i =1:m for j =1:n if trimap(i,j) == 255 background(i,j,:) = person(i,j,:); end end end 运行结果图

在这里插入图片描述

注意

1、更换时,也可以在人物图上改变,不过判断语句则要改写为以下语句

if trimap(i,j) == 0

2、一个二值图的坑,当我拿到二值图的时,默认为白色为1,结果一直换不成功。后面看了一下二值图矩阵的值,发现白色区域为255,修改后成功!



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3