ホームページ >バックエンド開発 >C++ >C++を使用してOpenCVでマルチチャネル画像からピクセル値を読み取るにはどうすればよいですか?

C++を使用してOpenCVでマルチチャネル画像からピクセル値を読み取るにはどうすればよいですか?

王林
王林転載
2023-09-08 20:13:10976ブラウズ

C++を使用してOpenCVでマルチチャネル画像からピクセル値を読み取るにはどうすればよいですか?

3 つの変数、つまり「blue_Channel」、「green_channel」、「red_channel」を宣言しました。これらの変数の目的は、ピクセル値を保持することです。これらの変数を「for ループ」で使用します。次に、「color_Image_Matrix」という行列を宣言します。

このメソッドの構文は次のとおりです。

blue_Channel = color_image_Matrix.at<Vec3b>(i, j)[0];

BGR イメージを使用します。 3つのチャンネルがあります。これらのチャネルは特定の順序を維持し、color_image_Matrix.at (i, j) は位置 (i, j) のピクセル値を表し、[0] は最初のチャネルを表します。たとえば、このコード行を次のように記述すると:

blue_Channel=color_image_Matrix.at<Vec3b> (30, 35) [0];

変数 'blue_Channel' の最初のチャネルのピクセル値が (30, 35) に位置することを意味します。これがピクセルにアクセスする方法です。 OpenCV を使用した値。

次のプログラムは、さまざまな RGB イメージのピクセル値を読み取り、さまざまなチャネルのピクセル値をコンソール ウィンドウに表示します。

Example

#include
#include
using namespace std;
using namespace cv;
int main() {
   int blue_Channel;
   int green_Channel;
   int red_Channel;
   Mat color_image_Matrix; //Declaring a matrix to load the image//
   color_image_Matrix = imread("colors.jpg"); //loading image in the matrix//
   //Beginning of for loop to read pixel values of blue channel//
   for (int i = 0; i < color_image_Matrix.rows; i++)//loop for rows// {
      for (int j = 0; j < color_image_Matrix.cols; j++) {
         //loop for columns//
         blue_Channel = color_image_Matrix.at<Vec3b>(i, j)[0];
         //To read the value of first channel.Here the blue channel is first channel//
         cout << "Value of pixel of blue channel" << "(" << i << "," << j << ")" << "="
            << blue_Channel << endl; //showing the values in console window//
      }
   }
   //End of for loop to read pixel values of blue channel//
   //Beginning of for loop to read pixel values of green channel//
   for (int i = 0; i < color_image_Matrix.rows; i++)//loop for rows// {
      for (int j = 0; j < color_image_Matrix.cols; j++)//loop for columns// {
         green_Channel = color_image_Matrix.at(i, j)[1];
         //To read the value of first channel.Here the green channel is first channel//
         cout << "Value of pixel of green channel" << "(" << i << ","
            << j << ")" << "=" << blue_Channel << endl;//showing the values in console window//
      }
   }
   //End of for loop to read pixel values of green channel//
   //Beginning of for loop to read pixel values of red channel//
   for (int i = 0; i < color_image_Matrix.rows; i++)//loop for rows// {
      for (int j = 0; j < color_image_Matrix.cols; j++)//loop for columns// {
         red_Channel = color_image_Matrix.at(i, j)[2];
         //To read the value of first channel.Here the red channel is first channel//
         cout << "Value of pixel of red channel" << "(" << i << "," <<
            j << ")" << "=" << blue_Channel << endl; //showing the values in console window//
      }
   }
   //End of for loop to read pixel values of red channel//
   if (waitKey(0)==27);
      cout << "Image read successfully…!";
      return 0;
}

出力

Image read successfully...

このプログラムの実行には数分かかります。各ピクセル値を異なるチャネルから読み取ります。そのため、完全な結果が表示されるまでに数分かかります。

以上がC++を使用してOpenCVでマルチチャネル画像からピクセル値を読み取るにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はtutorialspoint.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。