【发布时间】:2017-01-12 13:21:34
【问题描述】:
我已经彻底搜索了互联网和 stackoverflow,但我没有找到我正在寻找的东西!
如何在 OpenCV 中获取某个图像(图像的所有像素)的 RGB(实际上是 BGR)值?我使用的是 C++,图像存储在 cv::Mat 变量中。
到目前为止,我正在展示我的一些努力:我从另一个 stackoverflow 链接尝试了这段代码。但是每次我重新运行代码时,十六进制的值都会改变!例如,一旦它是 00CD5D7C,在下一次运行它是 00C09D7C。
cv::Mat img_rgb = cv::imread("img6.jpg");
Point3_<uchar>* p = img_rgb.ptr<Point3_<uchar> >(10,10);
p->x; //B
p->y; //G
p->z; //R
std::cout<<p;
在另一次尝试中,我使用了另一个答案中的这段代码。这里的输出总是-858993460。
img_rgb.at<cv::Vec3b>(10,10);
img_rgb.at<cv::Vec3b>(10,10)[0] = newval[0];
img_rgb.at<cv::Vec3b>(10,10)[1] = newval[1];
img_rgb.at<cv::Vec3b>(10,10)[2] = newval[2];
cout<<newval[0]; //For cout<<newval[1]; cout<<newval[2]; the result is still same
注意:我使用 (10,10) 作为获取 RGB 的测试,我的目标是获取整个图像的 RGB 值!
【问题讨论】:
-
看来你甚至没有试图理解你在做什么。使用
std::cout << img_rgb.at<Vec3b>(10,10); -
@Miki 没想到我这么蠢!感谢您的回答:) 它工作得很好。
-
@TylerH 那个解决方案对我没有用,解释也没有!