从图像中获取一行
Get a row from an image
我有一张图片,我想获取第一行(然后是第二行,依此类推...)
我写了这段代码,但它没有按预期工作:
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;
}
您可以使用row为指定的矩阵行创建矩阵header。如果您需要深拷贝,则可以使用 clone
.
此外,您需要 imshow
和 waitKey
位于循环内,否则您只会看到最后一行。
#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;
}
我有一张图片,我想获取第一行(然后是第二行,依此类推...)
我写了这段代码,但它没有按预期工作:
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;
}
您可以使用row为指定的矩阵行创建矩阵header。如果您需要深拷贝,则可以使用 clone
.
此外,您需要 imshow
和 waitKey
位于循环内,否则您只会看到最后一行。
#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;
}