인터넷 및 stackoverflow를 철저히 검색했지만 정확히 무엇을 찾고 있는지 찾지 못했습니다!openCV의 특정 이미지에있는 모든 픽셀의 RGB 값에 액세스
OpenCV에서 특정 이미지 (이미지의 모든 픽셀)의 RGB (실제로 BGR) 값을 어떻게 얻을 수 있습니까? 나는 C++을 사용하고 있고, 이미지는 cv :: Mat 변수에 저장되어있다.
나는 지금까지 내 노력 중 일부를 보여주고있다 : 나는 다른 stackoverflow 링크에서이 코드를 시도했다. 그러나 코드를 다시 실행할 때마다 16 진수 값이 변경되었습니다! 예를 들어 한 번 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
참고 : RGB를 얻으려는 테스트에 (10,10)을 사용했습니다. 전체 이미지가 RGB 값을 얻습니다!
당신이하고있는 일을 이해하려고하는 것조차 보이지 않는 것 같습니다. 'std :: cout << img_rgb.at를 사용하십시오 (10,10); –
Miki
@Miki 나는 이것이 매우 어리 석다는 것을 깨닫지 못했습니다! 답변 주셔서 감사합니다 :) 그것은 정말 잘 작동합니다. –
[OpenCV의 특정 픽셀 RGB 값에 액세스] 가능한 중복 (http://stackoverflow.com/questions/8932893/accessing-certain-pixel-rgb-value-in-opencv) – TylerH