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

Ban*_*ana 1 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
Run Code Online (Sandbox Code Playgroud)

其中x和y是鼠标回调函数的坐标.我认为这种类型是错误的,你知道我还能用什么来代替Vec3b吗?

小智 5

我假设问题正在发生,因为你正在使用"at(x,y)".文档说第一个参数应该是"基于0的行索引"和第二个"基于0的列索引".所以,你应该在(y,x)或(cv :: Point(x,y))调用.