繁体   English   中英

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

[英]Accessing pixel value using cv::Mat::at operator

我正在使用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

其中x和y是鼠标回调函数的坐标。 我认为该类型是错误的,您是否知道我还能用什么代替Vec3b?

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

检查http://opencv.willowgarage.com/documentation/cpp/basic_structures.html

OpenCV中的Vec3b是typedef Vec<uchar, 3> Vec3b; 因此,我想您需要在cout流程中将其转换为整数。

类似于std::cout << (int) inputImage.at<cv::Vec3b>(x,y)[0] << std::endl; //print B component std::cout << (int) inputImage.at<cv::Vec3b>(x,y)[0] << std::endl; //print B component

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM