急。。。一个视频颜色转黑白色的问题,在线等。
最近在做一个directshow的filter,把RGB视频流变成黑白的 .
在这里http://blog.csdn.net/mengaim_cn/article/details/241449
找到了方法,但是有个地方我不懂。想请教一下。。。
下面这段代码,谁知道是什么意思吗?
//m_Width=m_VihIn.bmiHeader.biWidth;
//m_Height=m_VihIn.bmiHeader.biHeight;
//m_bytePerLine=(24*m_Width+31)/32*4;
BYTE rColor,gColor,bColor,changeColor;
for (int i=0;i<m_Height;i++)
{
for (int j=0;j<m_Width;j++)
{
rColor=*(pbInput+(m_Height-i-1)*m_bytePerLine+j*3);
gColor=*(pbInput+(m_Height-i-1)*m_bytePerLine+j*3+1);
bColor=*(pbInput+(m_Height-i-1)*m_bytePerLine+j*3+2);
changeColor=(rColor+gColor+bColor)/3;
*(pbOutput+(m_Height-i-1)*m_bytePerLine+j*3)=changeColor;
*(pbOutput+(m_Height-i-1)*m_bytePerLine+j*3+1)=changeColor;
*(pbOutput+(m_Height-i-1)*m_bytePerLine+j*3+2)=changeColor;
}
}
这句*(pbInput+(m_Height-i-1)*m_bytePerLine+j*3)是用什么公式的吗?
[解决办法]
1、R/G/B的值都为changeColor=(rColor+gColor+bColor)/3的话,该像素就是灰度的;
2、*3的意思是每个像素点都是3个字节,所以*3才能找到相应像素点的内存起始地址。
[解决办法]