Assertion failed (dims <= 2) in cv::Mat::at
时间: 2024-05-18 16:10:51 浏览: 193
这是一个 OpenCV 的错误信息,通常会在使用 cv::Mat 类时遇到,它表示你正在尝试访问一个超过 2 维的矩阵,而 cv::Mat 只支持 1 或 2 维的矩阵。要解决这个问题,你需要检查你的代码中是否有超过 2 维的矩阵出现,并且将其转换为 1 或 2 维。如果你无法找到问题出现的地方,可以尝试使用调试器来帮助你找到问题。
相关问题
java opencv new Mat(mat, rect) 提示matrix.cpp:776: error: (-215:Assertion failed) 0 <= _colRange.start && _colRange.start <= _colRange.end && _colRange.end <= m.cols in function 'cv::Mat::Mat'
这个错误提示是由于您提供的矩形区域rect不在原始矩阵mat的范围内造成的。
请确保矩形区域rect的坐标和宽高都是正确的,并且不超出原始矩阵mat的范围。特别地,矩形区域的左上角坐标应该是非负整数,而矩形区域的右下角坐标应该不大于原始矩阵mat的宽高。
您可以使用下面的代码来检查矩形区域是否合法:
```
Rect roi = new Rect(x, y, width, height);
if (roi.x < 0 || roi.y < 0 || roi.x + roi.width > mat.cols() || roi.y + roi.height > mat.rows()) {
// error handling
}
```
其中,x和y是矩形区域的左上角坐标,width和height是矩形区域的宽和高,mat.cols()和mat.rows()分别返回原始矩阵mat的宽和高。如果矩形区域超出了原始矩阵的范围,就应该进行错误处理。
OpenCV: terminate handler is called! The last OpenCV error is: OpenCV(3.4.15) Error: Assertion failed (0 <= roi.x && 0 <= roi.width && roi.x + roi.width <= m.cols && 0 <= roi.y && 0 <= roi.height && roi.y + roi.height <= m.rows) in cv::Mat::Mat, file C:\build\3_4_winpack-build-win64-vc15\opencv\modules\core\src\matrix.cpp, line 751
这个错误是由于对图像的感兴趣区域(ROI)的指定不正确导致的。OpenCV中的ROI必须满足以下条件:
- ROI的x坐标和宽度必须大于等于0,并且x坐标加上宽度不能超过图像的列数。
- ROI的y坐标和高度必须大于等于0,并且y坐标加上高度不能超过图像的行数。
请检查你的代码,确保你正确设置了ROI的坐标和尺寸。如果你能提供更多的代码或上下文信息,我可以给出更具体的帮助。
阅读全文