Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++를 사용하여 OpenCV에서 단일 채널 이미지의 픽셀 값을 읽는 방법은 무엇입니까?

<시간/>

디지털 이미지는 픽셀로 구성됩니다. OpenCV를 사용하면 픽셀 값을 쉽게 읽을 수 있습니다. 그러나 픽셀 값을 얻으려면 단일 채널을 별도로 처리해야 합니다.

여기에서 'cimage'라는 행렬에 이미지를 로드하고 'cvtColor(cimage, img, COLOR_BGR2GRAY)를 사용하여 이미지를 변환합니다. ' 'img'라는 행렬에 저장합니다.

다음 프로그램은 이미지의 픽셀 값을 읽어서 콘솔 창에 값을 보여줍니다.

예시

#include<iostream>
#include<opencv2/highgui/highgui.hpp>
#include<opencv2/opencv.hpp>
using namespace std;
using namespace cv;
int main() {
   int x;//Declaring an integer variable to hold values of pixels//
   Mat cimage = imread("colors.jpg");//loading an image//
   Mat img;//Declaring an empty matrix to store converted image//
   cvtColor(cimage, img, COLOR_BGR2GRAY);//Converting loaded image to grayscale image//
   for (int i = 0; i < img.rows; i++)//loop for rows// {
      for (int j = 0; j < img.cols; j++)//loop for columns// {
         x = (int)img.at<uchar>(i, j);//storing value of (i,j) pixel in variable//
         cout << "Value of pixel" << "(" << i << "," << j << ")" << "=" << x << endl;//showing the values in console window//
      }
   }
   imshow("Show", img);//showing the image//
   waitKey();//wait for keystroke from keyboard//
   return 0;
}

출력

C++를 사용하여 OpenCV에서 단일 채널 이미지의 픽셀 값을 읽는 방법은 무엇입니까?