#define data(a,b,k) data[lLineBytes * a + b*3+k]
#define data2(a,b,k) data2[lLineBytes * a + b*3+k]
void sobelplugin::sobel(unsigned char * data, int height, int width)
{
int lLineBytes = WIDTHBYTES(width * 24);
lLineBytes=width*3;
unsigned char* data2=new unsigned char[lLineBytes*height];
double ux,uy;
for (int i = 1; i <height-1; i ++)
{
for (int j = 1; j < width-1; j ++)
{
ux= data(i-1,j-1,0)*-1+
data(i-1,j ,0)*-2+
data(i-1,j+1,0)*-1+
data(i+1,j-1,0)+
data(i+1,j ,0)*2+
data(i+1,j+1,0);
uy= -data(i-1,j-1,0)+
data(i ,j-1,0)*-2+
-data(i+1,j-1,0)+
data(i-1,j+1,0)+
data(i ,j+1,0)*2+
data(i+1,j+1,0);
data2(i,j,0)=sqrt(ux*ux+uy*uy);
if(data2(i,j,0)<x)
data2(i,j,0)=0;
if(data2(i,j,0)>255)
data2(i,j,0)=255;
//data2(i,j,2)=data2(i,j,1)=data2(i,j,0);
}
}
for (int i = 0; i <height; i ++)
{
for (int j = 0; j < width; j ++)
{
data(i,j,0)=255-data2(i,j,0);
data(i,j,1)=255-data2(i,j,0);
data(i,j,2)=255-data2(i,j,0);
}
}
//HWND hwnd = CreateDialog(, MAKEINTRESOURCE(IDD_DIALOG1), NULL, (DLGPROC)DialogProc);
}
sobel算子边缘检测原图和处理图
从处理图看好像有一部分沿着x方向拉伸后与处理后图片重合了,我找了好久也没找到问题出在哪求帮助