vc++sobel算子边缘检测求找错

StubbornSlug 2013-05-22 08:31:48
#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方向拉伸后与处理后图片重合了,我找了好久也没找到问题出在哪求帮助
...全文
147 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
StubbornSlug 2013-05-27
  • 打赏
  • 举报
回复
虽然确实是rgb图像不过我只处理一个然后另外的赋一样的值
bluewanderer 2013-05-22
  • 打赏
  • 举报
回复
虽然我基本上不会看没调整格式的代码。不过你这个效果八成是把三通道的图当一通道显示了。

64,682

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧