Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用cv::Mat::at运算符访问像素值_C++_Opencv - Fatal编程技术网

C++ 使用cv::Mat::at运算符访问像素值

C++ 使用cv::Mat::at运算符访问像素值,c++,opencv,C++,Opencv,我正在使用OpenCV 2.3.1(c++api),当我尝试获取彩色图像的像素值时,我得到了非常奇怪的结果,而不是值编号,输出如下:?,*,|等。例如,代码如下: cv::Mat inputImage = cv::imread("Picture1.jpg"); std::cout << inputImage.at<cv::Vec3b>(x,y)[0] << std::endl; //print B component cv::Mat inputImage=c

我正在使用OpenCV 2.3.1(c++api),当我尝试获取彩色图像的像素值时,我得到了非常奇怪的结果,而不是值编号,输出如下:?,*,|等。例如,代码如下:

cv::Mat inputImage = cv::imread("Picture1.jpg");
std::cout << inputImage.at<cv::Vec3b>(x,y)[0] << std::endl; //print B component
cv::Mat inputImage=cv::imread(“Picture1.jpg”);
标准::cout检查

OpenCV中的Vec3b是
typedef-Vec-Vec3b。所以,我想你需要在cout过程中转换为整数

类似于
std::cout检查

OpenCV中的Vec3b是
typedef-Vec-Vec3b。所以,我想你需要在cout过程中转换为整数


类似于
std::cout我假设问题的发生是因为您使用了“at(x,y)”。文档中说,第一个参数应该是“基于0的行索引”,第二个参数应该是“基于0的列索引”。因此,您应该调用at(y,x)或at(cv::Point(x,y))。

我假设出现问题是因为您使用的是“at(x,y)”。文档中说,第一个参数应该是“基于0的行索引”,第二个参数应该是“基于0的列索引”。所以,您应该在(y,x)或(cv::Point(x,y))调用。

是的,您是对的,但我不能打印我想要的所有内容,当我使用两个循环访问每个像素时,程序崩溃,它可能打印出100个值,然后停止:
for(int i=0;iOpenCV错误:断言在mat.hppNo中的第552行失败,我刚刚创建了控制台应用程序,并插入了我在这里写的那些行,只是为了看看它是否有效。好的,控制台应用程序,必须使用一些断言函数。无论如何,请检查您的内部循环
,以了解(int j=0;iYes,你是对的,但我不能打印我想要的所有内容,当我使用两个循环访问每个像素时,程序崩溃,它打印出大约100个值,然后停止:
for(int i=0;iOpenCV错误:断言在mat.hppNo中的第552行失败,我刚刚创建了控制台应用程序,并插入了我在这里写的那些行,只是为了看看它是否有效。好的,控制台应用程序,必须使用一些断言函数。无论如何,请检查您的内部循环
,以了解(int j=0;i尽管这是正确的,但发布的代码中可能存在错误(访问.at(x,y)而不是.at(y,x)),打印奇怪字符而不是数字看起来更像是一个打字问题。尽管这是正确的,但发布的代码中可能存在错误(访问.at(x,y)而不是.at(y,x)),打印奇怪的字符而不是数字看起来更像是一个打字问题。