为什么这段代码会崩溃
Why does this code crash
这是一个外行人对模糊图像的尝试,我没有使用任何特定的[已知]算法,我正在实现我自己的技术。
float k[][5]= { .01, .01, .01, .01, .01,
.01, .01, .01, .01, .01,
.01, .01, .01, .01, .01};
for( row = 0; row < rows; ++row)
{
sum=0;
for ( col = 0; col < cols; ++col)
{
temp_ptr = &((uchar*)(img->imageData + (img->widthStep*row)))[col];
for( i=1; i<6;i++)
{
float factor=exp((float)(-(i-col)*(i-col)/(2*sigma2)));
sum+=factor;
for( j=1; j<6 ;j++)
{
if( (row-j)>0 && (col-i)>0 )
k[i-1][j-1]+=factor*temp_ptr[row-i+col-j];
}
for( j=1; j<6 ;j++)
{
if( (row-j)>0 && (col-i)>0 )
{
uchar* temp_ptr1 = &((uchar*)(img->imageData + (img->widthStep * (row-1) )))[col-1];
temp_ptr1[0]=temp_ptr[0]*k[i-1][j-1]/sum;
temp_ptr1[1]=temp_ptr[1]*k[i-1][j-1]/sum;
temp_ptr1[2]=temp_ptr[2]*k[i-1][j-1]/sum;
}
}
}
}
}
您的j
索引超出了数组k
的范围。它不能大于5 !
在第5个for
中,您应该将上限更改为5
而不是6
。
k
只有三行,但是在第一个内部j
for
循环中访问不存在的第4行和第5行。在访问了这些行之后,程序的其余部分就没有任何悬念了。
我不知道,但是代码很容易出错。使用c++的OpenCV接口
相关文章:
- 为什么所有C++编译器都会崩溃或挂起此代码
- 使用 g++7 构建的代码在访问未对齐的内存时崩溃
- 您好,我实际上想了解以下代码.有人可以详细说明代码它到底在做什么吗?为什么它会在第 31 行崩溃
- 无法访问的代码如何导致我的程序崩溃?
- C++代码崩溃并具有无限循环
- 由于指针算法错误,代码在 memcpy 中崩溃
- 为什么在同一条件变量上使用多个互斥锁会使此代码崩溃?
- 运行简单的.oct文件时Octave崩溃,我的代码出了什么问题?
- 为什么代码会崩溃?(在CPP中)
- 赋值运算符在我制作类模板时使代码崩溃
- 为什么抓取窗口标题的代码会导致应用崩溃?
- 类似的代码.一个工作,一个崩溃.为什么?
- 为什么这段代码崩溃了
- 为什么此代码在此 Trie 实现中使用映射 c++ 中的指针崩溃?
- 为什么此代码会崩溃?(我是C 的新手)
- 程序过早结束,可能已经崩溃了.退出代码0xc0000005
- C++ - 代码在Visual Studio中完美运行,但命令行中的.exe不断崩溃
- 如何在导致应用程序崩溃的代码中修复指令
- 运行时,程序崩溃(代码块C++)
- 是我的编译器将适当的代码优化为无用的崩溃代码