C++ 如何逐行读取灰度图像opencv c++;

C++ 如何逐行读取灰度图像opencv c++;,c++,opencv,C++,Opencv,我有一个灰色的图像,我想读取图像中的每一行 我怎样做这个算法 有人能帮我吗 这是我使用的代码 //#include "stdafx.h" #include <stdio.h> #include <cv.h> #include <iostream> #include <conio.h> #include <cxcore.h> #include <opencv2/highgui/highgui.hpp> #include

我有一个灰色的图像,我想读取图像中的每一行

我怎样做这个算法

有人能帮我吗

这是我使用的代码

 //#include "stdafx.h"
#include <stdio.h>
#include <cv.h>
#include <iostream>
#include <conio.h>
#include <cxcore.h>
#include  <opencv2/highgui/highgui.hpp>

#include <opencv2/imgproc/imgproc.hpp>

#include <stdlib.h>
using namespace cv;


Mat dst;       
void main()
{

cv::Mat img = cv::imread("capture.jpg",CV_LOAD_IMAGE_GRAYSCALE);

cv::Mat some_row = img.row(0); //gives 1st row


namedWindow( "source",CV_NORMAL);
 imshow( "source",img);
 namedWindow( "img",CV_NORMAL);
 imshow( "img",dst);
 waitKey(0);
/#包括“stdafx.h”
#包括
#包括
#包括
#包括
#包括
#包括
#包括
#包括
使用名称空间cv;
Mat-dst;
void main()
{
cv::Mat img=cv::imread(“capture.jpg”,cv\u LOAD\u IMAGE\u灰度);
cv::Mat some_row=img.row(0);//给出第1行
namedWindow(“来源”,CV_正常);
imshow(“来源”,img);
namedWindow(“img”,CV_正常);
imshow(“img”,dst);
等待键(0);
从图像中,我喜欢对颜色进行排序,并做一个测试,如果我能找到顺序白色,然后黑色,然后白色,然后黑色。 因此,我喜欢逐行搜索。 我可以分享这张照片,你可以更了解我。 我已经做了一个算法,可以从右边和左边检测圆 这就行了。我需要一个只搜索颜色的代码,而不搜索图像中的任何对象(按颜色顺序(白。黑。白。黑)来获得我搜索的正确位置)
我们的即时消息如图所示。

我建议您阅读上的opencv教程。您还应该看看

做你需要的事情的方法不止一种。不同的方法有不同的效率和安全性权衡。更有效的方法直接与指针一起工作。这很快,但你必须注意根据图像存储在内存中的像素数、通道数和填充数正确地做指针算术

另一方面,使用迭代器或类似于
Mat::at
的东西更安全,因为这些计算都是为您设计的,但效率不高

请查看文档并选择适合您的问题的方法。希望有帮助。

您可以使用
.row()
方法:

cv::Mat img = cv::imread("some_path.jpg",CV_LOAD_IMAGE_GRAYSCALE);//some gray level image  

cv::Mat some_row = img.row(0); //gives 1st row

请注意,此方法会导致与原始矩阵共享数据。
img
。如果您想进行复制操作,可以使用此方法。

是的,这就是我的意思。您正在尝试为一个名为DST的空矩阵成像。感谢thomas的帮助,我将进一步解释im搜索的内容。我制作了一个可以搜索圆并测试t的算法他从右侧和左侧的4个第一个圆圈开始着色,这很有效。但这不是我需要的。我尝试过使用此代码,但不幸的是,由于某些原因,它会出现故障:(