2011-04-06 87 views
2

我想用一些值填充opencv矩阵,但我不断收到segfaults。代码如下:Segfault当使用打开cv Mat ::在

Mat mask_gx(in_window_size, in_window_size, image.type()); 
    for(int i = 0; i <= in_window_size; i++) 
    { 
    for(int j = 0; j <= in_window_size; j++) 
    { 
     double gx = (-i/in_sigma) * pow(M_E, ((pow(i, 2)* pow(j, 2))/pow(in_sigma, 2))/(-2)); 
     mask_gx.at<double>(j, i) = gx; 
    } 
    } 

问题在最后一行。我已经测试它:

mask_gx.at<int>(j, i) = 1; 

我仍然得到段错误。

有没有人有任何想法似乎是这个代码的问题?

回答

1

如果in_window_size是在每个维度值的,那么它应该是在for -loop比较<而不是<=,我相信。

+0

谢谢,我已经纠正它,但这并不能解决问题。有趣的是,最后一行在循环外完美无缺。 – mobearette 2011-04-06 13:01:09

+0

难道是'image.type()'不能正确对应一个可以设置'double'值的类型(如'mask_gx.at ')?也许它对应于一个小于“double”的类型? – 2011-04-06 13:21:54

+0

这个问题变得越来越有趣。 in_window_size的值是11.当我尝试在循环中放入固定值时,它可以正常工作到7.但7之后的所有内容都会导致段错误。 再次,下面的代码在循环外完美地工作: 'mask_gx.at (11,11)= 1.0;' – mobearette 2011-04-06 13:23:23