我在Mat :: at
的第537行收到断言失败错误OpenCV错误:断言失败(dims< = 2&& data&&(unsigned)i0<(unsigned)si ze.p [0]&&&(unsigned)(i1 * DataType< ; _Tp> :: channels)<(unsigned)(size.p [1] * channel s())&&((((sizeof(size_t)<<< 28)| 0x8442211)>> ((DataType< _Tp> :: depth)&((1<<< 3) - 1))* 4)& 15)== elemSize1())在未知函数中,文件c:\ users \ tim \文件s \ code \ opencv \ build \ include \ opencv2 \ core \ mat.hpp,第537行
我正在尝试填充我将在函数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);
}
}
}
非常感谢任何帮助!
答案 0 :(得分:0)
根据您的错误代码,您可以在Mat::at
调用后发现断言失败,并且在此方法中,如果出现以下情况,则代码将变为false:
一个。 nr。渠道小于2
湾数据为空
C。 (无符号)i0&lt; (无符号)size.p [0]
加上其他一些。
在你的情况下我的建议是nr。渠道。 CV_32FC1就是这样的:
CV_&LT; bit_depth&gt; (S | U | F)℃下nr_channels&gt;。我想这里是问题,模板参数或数据为空。
我的解决方案只是使用CV_32F。
作为一个重要的参考,请看这里:
OpenCV Error: Assertion failed, mat.cpp line 537