首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

vc++ vfw视频处理 腐蚀化有关问题

2012-09-15 
vc++ vfw视频处理 腐蚀化问题回调函数调用腐蚀程序如下int CBmpTrack::yuy2Erosion(BYTE * pBits, int num

vc++ vfw视频处理 腐蚀化问题
回调函数调用腐蚀程序如下

int CBmpTrack::yuy2Erosion(BYTE * pBits, int num,long lWidth,long lHeight)
{
int TempBuf[9]={1,0,0,1,1,0,1,1,1};
int TempH=3;
intTempW=3;
int LineByte = lWidth;
int i,j,k,l,n;
int flag;//标志变量
unsigned char* m_pImgDataOut; 
unsigned char* m_pImgData1Out; 
m_pImgDataOut=new unsigned char[num/2];//申请输出图像位图数据缓冲区
m_pImgData1Out=new unsigned char[num/2];//申请输出图像位图数据缓冲区
//memcpy(m_pImgDataOut,pBits,num); // 复制变换后的图像 
//针对图像中每一个像素位置,判断是否结构元素能填入目标内部
for (n=0;n<num/2;n++) 
{
m_pImgDataOut[n]=pBits[n*2];
}
for(i=TempH/2;i<lHeight-TempH/2;i++)
{
for(j=TempW/2;j<lWidth-TempW/2;j++)
{
//判断结构元素是否可以在当前点填入目标内部,1为可以,0为不可以
flag=1;
for(k=-TempH/2;k<=TempH/2;k++)
{
for(l=-TempW/2;l<=TempW/2;l++)
{
//如果当前结构元素位置为1,判断与对应图像上的像素点是否为非0
if(TempBuf[(k+TempH/2)*TempW+l+TempW/2])
{
//如果图像当前象素为0,则没有击中该点,不是腐蚀的输出
if(!*(m_pImgDataOut+(i+k)*LineByte+j+ l))
flag=0;
}
}
if(flag)
*(m_pImgData1Out+i*LineByte+j)=255;
else
*(m_pImgData1Out+i*LineByte+j)=16;
}
}}
for (n=0;n<num/2;n++) 
{
pBits[n*2]=m_pImgData1Out[n];
}
return 1;
}

运行后结果有重影,如图


[解决办法]
好强大啊
[解决办法]
恭喜楼主解决问题,多谢分享。
[解决办法]
楼主的图片是怎么插入到帖子的啊, 我插图片,总是弹出http的地址?

热点排行