OpenCV将图像分割成矩形

时间:2015-10-07 16:08:47

标签: c++ opencv

我有一个图像,我希望它被拆分成偶数矩形到目前为止我有这个代码,但我一直在崩溃,我不知道为什么。

        int cells = 10;
        int rows_to_process = image.rows / cells;
        int cols_to_process = image.cols;

        cv::Mat img;
        std::vector<cv::Mat> imageSections(cells);
        int x = 0;
        int y = 0;

        cout << imageSections.size() << endl;
        for(int i=0; i<image.rows/rows_to_process; i++)
        {   
            cout << "i is: " << i << " x is: " << x << endl;
            imageSections[i] = image(cv::Rect(x, y, cols_to_process, rows_to_process));
            x += rows_to_process;
        }

我测试了输出x,我得到的维度从0到图像大小的增量相等。我希望增加x到我想要开始的下一个点可以工作,但我经常崩溃。有没有人知道为什么?

我的错误在终端中显示为

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 Mat,

1 个答案:

答案 0 :(得分:0)

怎么样(没试过):

    int cell_Height = image.rows / 10;
    int cell_width = image.cols;

    std::vector<cv::Mat> imageSections(rows_to_process);
    int x = 0;
    int y = 0;

    for(y=0; y+cell_Height<image.rows; y+=cell_Height)
    {   
        cout << y << endl;
        imageSections[i] = image(cv::Rect(x, y, cell_Width, cell_Height));
    }