我已经在StackOverflow上看到了不同的问题,但似乎没有任何帮助.我想要做的很简单:我有一个cv::Point
,我需要获得该点的像素的RGB值,cv::Mat
以便我可以将它与存储的RGB值进行比较.
现在这应该很容易,但我尝试了1001种不同的方式,它对我来说不起作用.
有人请帮助我摆脱痛苦!
编辑:以下两个答案都有效!我使用C还挺新++,不知道输出unsigned char
通过cout
给出一个问号!
printf
offcourse给予正确的价值!
这真的很容易.然而,OpenCV的文档擅长隐藏简单的答案.
这是示例代码:
cv::Mat3b image = imread(filename);
cv::Point point(23, 42);
cv::Vec3b template;
template[0] = 128; template[1] = 12; template[2] = 64;
const cv::Vec3b& bgr = image(point);
if (bgr[0] == template[0] && bgr[1] == template[1] && bgr[2] == template[2])
std::cout << "Colors match!" << std::endl;
Run Code Online (Sandbox Code Playgroud)
有可能更好的方法来处理cv :: Vec,但我忘记了.另请参见OpenCV备忘单.