OpenCV 矩阵边界报错问题排查流程 cv::error() Error: Assertion failed (0 <= roi.x && 0 <= roi.width && roi.x ...

cv::error(): OpenCV(4.0.1) 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 Mat

如果在使用 OpenCV 做矩阵运算的时候,出现这种错误。那就意味着参与运算的矩阵在长宽条件上不满足正整数的条件值,或者是左上角坐标为负数。

OpenCV 的坐标运算处理是默认全局坐标,左上角为(0,0)起始点,右下角为(+,+)的。
这一点和 OpenGL 的顶点配置坐标系是不一样的。
OpenCV 用于做图像运算时,每个矩阵中点的坐标都是对应图像相应像素点的直接坐标。

因此,此类问题经常出现在移动端 OpenGL 与 OpenCV 协调处理图像数据的时候。
如果出现,就需要检测一下,参与OpenCV运算的 Mat 其数据是不是来源自外部传参,且不是OpenCV 可处理的坐标。

你可能感兴趣的:(OpenCV 矩阵边界报错问题排查流程 cv::error() Error: Assertion failed (0 <= roi.x && 0 <= roi.width && roi.x ...)