use*_*864 3 c++ opencv image-processing computer-vision
http://pastebin.com/5ZeMvm2C是我项目中的头文件.
在第249行有skeleton.at(yaxis,xaxis + 1).当我在我的项目中键入此代码时出现此错误:
**OpenCV Error: Assertion failed (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()) in unknown function, file c:\opencv\build\inclu
de\opencv2\core\mat.hpp, line 537**
// mat.cpp line 537 is:
    template<typename _Tp> inline _Tp& Mat::at(int i0, int i1)
        {
            CV_DbgAssert( dims <= 2 && data && (unsigned)i0 < (unsigned)size.p[0] &&
                (unsigned)(i1*DataType<_Tp>::channels) < (unsigned)(size.p[1]*channels()) &&
                CV_ELEM_SIZE1(DataType<_Tp>::depth) == elemSize1());
            return ((_Tp*)(data + step.p[0]*i0))[i1];
        }
怎么了?
http://pastebin.com/gqJ5RpBU也是我的.cpp文件.
正如错误消息所示,您有一个失败的OpenCV运行时断言.
正如您在问题中所写,失败的断言在Mat::at函数内部.
你必须在你的代码中找到Mat::at给你错误的调用(或调用).
正如您在OpenCV帮助页面上 看到的那样,Mat::at模板函数有一个,两个或三个参数,断言失败可能有多种原因:
template<typename T> T& Mat::at(int i, int j),i应该介于两者之间0,行数减去一,j假定介于两者之间0,列数减去一.如果您有一个包含100行的图像,并且您要求第101行的元素,则断言将失败.在这种情况下,逐个错误很常见.更具体地说,断言失败了,因为以下至少有一个bool是false:
dims <= 2data (unsigned)i0 < (unsigned)size.p[0](unsigned)(i1 * DataType<_Tp>::channels) < (unsigned)(size.p[1] * channels())CV_ELEM_SIZE1(DataType<_Tp>::depth) == elemSize1())以上bools在Mat课堂范围内有意义.
此外,请注意帮助说:
为了提高性能,索引范围检查仅在Debug配置中执行
所以在你的Release配置中,你不会有失败的断言,但可能在某个地方崩溃.
从您链接的源代码,在我看来,您在Windows上,如果这是真的,如果您有Visual Studio,我建议您从源代码构建OpenCV,在内部放置一个断点Mat::at,然后调试您的代码为了看看以前bool的是什么false.
| 归档时间: | 
 | 
| 查看次数: | 23466 次 | 
| 最近记录: |