我正在尝试从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:这是我的第一个问题,如果格式化有任何错误,那就很抱歉。
答案 0 :(得分:1)
在我看来,当抓取矩形不在垫子内时,就会发生断言 什么是图像尺寸?