【问题标题】:Assertion error in GrabcutGrabcut 中的断言错误
【发布时间】:2013-12-31 19:44:47
【问题描述】:

我正在尝试从reference code 在 Android 中实现 Grabcut。但是当我运行代码时,会产生以下错误。

错误:

OpenCV 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(const cv::Mat&, const Rect&), file /home/reports/ci/slave_desktop/50-SDK/opencv/modules/core/src/matrix.cpp, line 323

我还阅读了Similar article on Stackoverflow 并在代码中进行了以下更改,但仍然出现相同的错误。

修改部分参考代码:

private void backgroundSubtracting(Mat img, Mat background) {
    Mat firstMask = new Mat();
    Mat bgModel = new Mat();
    Mat fgModel = new Mat();
    Mat mask;
    Mat source = new Mat(1, 1, CvType.CV_8U, new Scalar(3.0));
    dst = new Mat();
    Rect rect = new Rect(318,100,513,349);  // <= Static value for checking

    Imgproc.grabCut(img, firstMask, rect, bgModel, fgModel, 1, 0 /* GC_INIT_WITH_RECT */);

PS:这是我的第一个问题,如果格式有任何错误,请见谅。

【问题讨论】:

    标签: android opencv


    【解决方案1】:

    在我看来,当 Grabcut rect 不在垫子内时会发生断言。
    图片尺寸是多少?

    【讨论】:

    • GrabCut rect 在 matt 内部;这就是我手动输入值的原因;见上面的代码。
    • 然后 img.cols
    • 对不起,你问什么?
    • 确保您的图像等于或大于 831x449。我认为没有其他方法可以解决您的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-02
    • 1970-01-01
    • 2012-05-08
    • 2018-05-19
    • 2014-09-27
    相关资源
    最近更新 更多