【发布时间】:2014-11-25 08:11:11
【问题描述】:
我在 Mat::at 的第 537 行收到断言失败错误
OpenCV 错误:断言失败 (dims ::channels) > ((DataType<_tp>::depth) & ((1
我正在尝试填充将在函数 cv::remap 中使用的矩阵。 导致此断言失败的代码部分如下:
void Functions::PopulatedMapY(Mat image)
{
mapy.create(image.rows, image.cols, CV_32FC1);
for (int j = 0; j<image.rows; j++)
{
float a = (image.rows - 1) - gazey;
float b = (image.cols - 1) - gazex;
for (int i = 0; i<image.cols; i++)
{
mapy.at<float>(j,i) = map2y.at<float>(a+j,b+i);
}
}
}
矩阵map2y在MapCreator函数中定义如下:
void Functions::MapCreator(Mat image, float const_a, float const_b)
{
map2x.create(2*image.rows, 2*image.cols, CV_32FC1);
map2y.create(2*image.rows, 2*image.cols, CV_32FC1);
for (int m = 0; m<2*image.rows; m++)
{
ty = image.rows - m;
for (int n = 0; n<2*image.cols; n++)
{
tx = image.cols - n;
map2x.at<float>(m,n) = n;
map2y.at<float>(m,n) = m +const_b*exp(-pow(tx,2)/pow(const_a, 2))*Signum(ty);
}
}
}
任何帮助将不胜感激!
【问题讨论】:
-
您好,您能否提供更多信息,例如崩溃时的 i 和 j 的值以及gazey 和gazex 的值。
-
嗨,gazey 和gazex 可以分别在0 和image.rows - 1 和image.cols - 1 之间变化。程序一运行就编译并崩溃。有没有办法在崩溃时找出 I 和 j 的值?谢谢!
-
btw a 和 b 应该是整数...您应该尝试访问索引而不是浮点数。 a + i 应该是一个 int。
-
那么你做到了吗?