从图像中获取一行

时间:2016-03-09 22:36:44

标签: opencv roi

我有一张图片,我希望获得第一行(然后是第二行,依此类推......)

我编写了这段代码,但它没有按预期工作:

int main(int argc, char** argv) 
{
    Mat img = imread("a.jpg");
    Mat line, ROI;
    for (int i = 0; i<img.rows; i++)
    {
        for (int i = 0; i<img.cols; i++)
        {
            ROI = img.clone();
            //  ROI=img(cropRect);
            Mat line = ROI(Rect(0, i, ROI.cols, 1)).clone();
        }
    }
    imshow("line", line);
    int k = waitKey(0);
    return 0;
}

1 个答案:

答案 0 :(得分:1)

您可以使用row为指定的矩阵行创建矩阵标头。如果您需要深层副本,则可以使用clone

此外,您需要imshowwaitKey进入循环,否则您只会看到最后一行。

#include <opencv2/opencv.hpp>
using namespace cv;

int main() 
{
    Mat img = imread("path_to_image");
    Mat line;
    for (int i = 0; i < img.rows; i++)
    {
        line = img.row(i);

        // Or, for a deep copy:
        //line = img.row(i).clone();

        imshow("line", line);
        waitKey(0);
    }
    return 0;
}