![](https://csdnimg.cn/release/download_crawler_static/4252618/bg7.jpg)
7
LPBYTE temp1=new BYTE[wide*height]; //新图像缓冲区
LPBYTE temp2=new BYTE[wide*height]; //新图像缓冲区
//拷贝原图像到缓存图像
memcpy( temp1,p_data,wide*height);
memcpy( temp2,p_data,wide*height);
//设置Sobel模板参数
tempW=3;
tempH=3;
tempC=1.0;
tempMY=1;
tempMX=1;
float Template1[3*3] = {-1,-2,-1,
0, 0, 0,
1, 2, 1};
//调用Templat()函数
Templat( temp1,wide,height,tempH,tempW,tempMX,tempMY,Template1,tempC);
//设置Sobel模板参数
float Template2[3*3] = {-1,0,1,
-2,0,2,
-1,0,1};
//调用Templat()函数
Templat( temp2,wide,height,tempH,tempW,tempMX,tempMY,Template2,tempC);
//求两幅缓存图像的最大值
for(int j=0;j<height;j++)
for(int i=0;i<wide;i++)
if( temp2[j*wide+i]> temp1[j*wide+i])
temp1[j*wide+i]= temp2[j*wide+i];
//将缓存中的图像复制到原图数据区
memcpy(p_data, temp1,wide*height);
//删除缓冲区
delete []temp1;
temp1 = NULL;
delete []temp2;
temp2 = NULL;
}
else //24位彩色
{
int DibWidth; //原图长、宽
DibWidth=this->GetDibWidthBytes(); //取得原图的每行字节数
BYTE *p_temp1=new BYTE[height*DibWidth];
BYTE *p_temp2=new BYTE[height*DibWidth];
//将缓存中的图像复制到原图数据区
memcpy(p_temp1,p_data,DibWidth*height);
memcpy(p_temp2,p_data,DibWidth*height);