嗷嗷难问题之一:动态更换服装面料问题,请多提思路,200分相送!(在线等) (200分)

  • 主题发起人 主题发起人 TIDE_LIU
  • 开始时间 开始时间
T

TIDE_LIU

Unregistered / Unconfirmed
GUEST, unregistred user!
遇到拦路虎,服装图片(实物图非效果图),人物动作、服装褶皱均不同,要实现动态
更换面料(面料不限),还要保持服装的褶皱效果,该如何实现。可以使用辅助图片。
 
哪位大虾顺带讲一下bitblt的用法,可好!
 
我也没有搞过,不过有用过这方面的软件,基本上说个思路吧
1、首先肯定你说的那个褶皱的实现绝对不是个容易的事,我
觉得是不是可以和Photoshop中分图层一样,把你面料的图
层做的透明一些,把下面的褶皱露出一点,不过好象会连下
面的图片也显示出来,不太可行。
2、关于面料的更换,我没有见过可以直接更换的(那恐怕就要
用到自动寻找边缘之类的技术了),大部分的解决方法都是
用表格,就是让用户依据服装图片描出来一个框架表格,然
后在表格中添入面料图片。基本上是这样,细节我也描述不
太清楚。
 
我做了个实验,将图片中服装部分抠去,将抠去部分半透明,一共用3层,
最下面一层已抠去服装后图片,第二层是面料填充区域,最上面一层是
半透明的抠去部分,已经有些效果了,但是第二层的区域如何确定,最
上面图层的透明度如何控制,请大家多多提思路.
 
你作的好像是个难点啊,国外有比较好的软件,我以前看过,人体啊,沙发,窗帘,都可以
实时换,
 
这个可不用DELPHI,用游戏开发工具就可实现。比如说《虚拟人生》
 
斑竹快出来帮帮忙!
bitblt的用法(d6帮助中没有,就是图像透明度的控制),
不规则区域的确定方法,
这两个问题解决了,这个问题就可以结了.
 
好像不规则区域用createpolygonrgn()
 
占位置。

学习图像处理方面的东西。
 
bitblt的用法看WIN API文档就有
不规则区域的确定方法:扫描图象的scanline, 取选定色的连续坐标, 认为是一个
height=1的rect,用CreateRectRgn生成region, 再用CombineRgn(.....RGN_OR)与先前
生成的region合并生成新的region.重复扫描完所有扫描线后就得到一个region了.
 
有一个简单方法,如你前面所说,将图像分为三层
底层为人物,服装部分抠去,Image1,
中间层为面料填充,区域由抠去的服装部分确定,Image2,抠去服装部分处理为白底黑色区域
上层为衣服褶皱,为服装抠去部分处理成灰度,PaintBox1,
所填充面料,image3,
褶皱,image4,
将面料定义画笔 image2.canvas.brush.bitmap:=image3.picture.bitmap;
填充image4的区域 image2.canvas.floodfill(x,y,clWhite,fsBorder);//x,y在服装区域内
画将褶皱画到PaintBox PaintBox1.Refresh();
Bitblt(PaintBox1.canvas.handle,0,0,Image4.Width,Image4,Height,
Image4.canvas.Handle,0,0,srcand );
ok
 
接受答案了
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部