Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

I've looked at different questions already here on StackOverflow, but none seems to helps. What I want to do is quite simple: I have a cv::Point and I need to get the RGB value for the pixel at that point in a cv::Mat so that I can compare it with a stored RGB value.

Now this should be very easy but I've tried 1001 different ways and it just doesnt work for me.

Someone please help me out of my misery!!

edit: both answers below work! I'm kinda new with C++ and didn't know that outputting a unsigned char through cout gives a questionmark! printf offcourse gives the right value!!

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
613 views
Welcome To Ask or Share your Answers For Others

1 Answer

That's really easy. However the documentation of OpenCV is good at hiding the simple answers.

Here is example code:

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;

There are probable better ways of dealing with the cv::Vec, but I forgot. See also the OpenCV Cheat Sheet.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
...