修改OpenCV源代码

时间:2017-06-19 03:24:59

标签: opencv

这可能是一个基本问题,但我无法从哪里开始。

我从OpenCV包中收到以下错误。我的问题是:实际上是哪个文件给出了错误,在可能的修改后如何重建包以应用更改?

/build/buildd/opencv-2.4.8+dfsg1/modules/core/src/matrix.cpp:323: error: (-215) 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 function Mat

我使用Anaconda作为python发行版,但似乎无法在那里找到OpenCV源代码。

1 个答案:

答案 0 :(得分:1)

错误仅表示您用于创建子矩阵的cv::Rect(),其尺寸大于原始cv::Mat()。或者您的原始cv::Mat()可以为空width, height == 0。来源可以确认here

您可能将cv::Mat构造函数称为:

cv::Mat subMat = originalMat(cropRect);

但不检查cropRect是否在originalMat大小的范围内。要防止出现这种情况,您可以在裁剪if之前放置Mat条件:

originalRect = cv::Rect(0, 0, originalMat.cols, originalMat.rows);
// Check if crop rect completely overlaps the originalMat bounds.
if (originalRect & cropRect == cropRect) {
    subMat = originalMat(cropRect);
} else {
    std::cout << originalRect << " is less than " >> cropRect << std::endl;
}