最近做的一个项目中要用到抠像和半透明技术,由于刚学Directdraw,查了好多资料,很费事,现把其中的要点和代码附上,以供大家参考:
1,抠像原理
要有两副图形: 背景色,实时采集的图形,比如要抠一个人的图象放在背景色上,在国内人要站在蓝色的背景墙前,国外是绿色,因为外国人的眼睛是蓝色的;然后根据颜色差进行判断;
for(i = 0; i < 480 ; i ++)
{
for(j = 0; j < 640; j ++)
{
x1 = m_pBkImg[n] - m_pSrcImg[n];
x2 = m_pBkImg[n + 1] - m_pSrcImg[n + 1];
x3 = m_pBkImg[n + 2] - m_pSrcImg[n + 2];
if(x1 < 0)//去正
x1 = -x1;
if(x2 < 0)
x2 = -x2;
if(x3 < 0)
x3 = -x3;
if(
( x1 > g_B)||//blue //根据域值判断抠像的范围
(x2 > g_G)||//green
(x3 > g_R)//||//red
)
{
m_pObjImg[n] =m_pSrcImg[n];
m_pObjImg[n + 1] = m_pSrcImg[n + 1];
m_pObj