특정 픽셀의 값을 읽으려면 'at' 또는 '직접 접근' 방법을 사용할 수 있습니다. 여기에서 우리는 두 가지 접근 방식을 모두 배울 것입니다.
'at' 메서드부터 시작하겠습니다. 다음 프로그램은 RGB 이미지의 (10, 29) 위치에 있는 픽셀 값을 읽어옵니다.
예시
#include<iostream> #include<opencv2/highgui/highgui.hpp> using namespace std; using namespace cv; int main() { Mat image;//taking an image matrix// image = imread("sky.jpg");//loading an image// int x = image.at<Vec3b>(10, 29)[0];//getting the pixel values// int y = image.at<Vec3b>(10, 29)[1];//getting the pixel values// int z = image.at<Vec3b>(10, 29)[2];//getting the pixel values// cout << "Value of blue channel:" << x << endl;//showing the pixel values// cout << "Value of green channel:" << x << endl;//showing the pixel values// cout << "Value of red channel:" << x << endl;//showing the pixel values// system("pause");//pause the system to visualize the result// return 0; }
출력
프로그램 결과가 콘솔 창에 표시됩니다. 여기에서 다음 세 줄을 사용하여 세 가지 다른 채널의 픽셀 형식 값을 얻습니다.
int x = image.at<Vec3b>(10, 29)[0]; int y = image.at<Vec3b>(10, 29)[1]; int z = image.at<Vec3b>(10, 29)[2];
첫 번째 줄에서 첫 번째 채널(파란색)의 (10, 29)에 있는 픽셀 값을 읽고 'x' 변수에 값을 저장합니다. 두 번째와 세 번째 줄은 2 nd 값을 저장합니다. 및 3 번째 채널, 각각. 이제 '직접 접근' 방식을 사용하여 픽셀 값을 읽는 방법을 알아보겠습니다.
다음 프로그램은 (10, 29)에 있는 픽셀 값을 직접 읽는다 -
예시
#include<iostream> #include<opencv2/highgui/highgui.hpp> using namespace std; using namespace cv; int main() { Mat_<Vec3b>image;//taking an image matrix// image = imread("sky.jpg");//loading an image// Vec3b x = image(10, 29);//getting the pixel values// cout << x << endl;//showing the pixel values// system("pause");//pause the system to visualize the result// return 0; }
출력