Heim > Backend-Entwicklung > C++ > Wie lese ich Pixelwerte aus einem Mehrkanalbild in OpenCV mit C++?

Wie lese ich Pixelwerte aus einem Mehrkanalbild in OpenCV mit C++?

王林
Freigeben: 2023-09-08 20:13:10
nach vorne
980 Leute haben es durchsucht

Wie lese ich Pixelwerte aus einem Mehrkanalbild in OpenCV mit C++?

Wir haben drei Variablen deklariert, nämlich „blue_Channel“, „green_channel“ und „red_channel“. Der Zweck dieser Variablen besteht darin, Pixelwerte zu speichern. Wir verwenden diese Variablen in der „for-Schleife“. Dann deklarieren wir eine Matrix namens „color_Image_Matrix“.

Die Syntax dieser Methode lautet wie folgt:

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

Wir verwenden ein BGR-Bild. Es verfügt über drei Kanäle. Diese Kanäle behalten eine bestimmte Reihenfolge bei, color_image_Matrix.at (i, j) repräsentiert den Pixelwert an Position (i, j) und [0] repräsentiert den ersten Kanal. Wenn wir diese Codezeile beispielsweise wie folgt schreiben:

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

Das bedeutet, dass die Variable „blue_Channel“ den Pixelwert des ersten Kanals bei (30, 35) hat. So können wir auf die Pixelwerte zugreifen OpenCV.

Das folgende Programm liest Pixelwerte verschiedener RGB-Bilder und zeigt die Pixelwerte der verschiedenen Kanäle in einem Konsolenfenster an.

Beispiel

#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;
}
Nach dem Login kopieren

Ausgabe

Image read successfully...
Nach dem Login kopieren

Die Ausführung dieses Programms dauert einige Minuten. Es liest jeden Pixelwert von einem anderen Kanal. Aus diesem Grund dauert es einige Minuten, bis die vollständigen Ergebnisse angezeigt werden.

Das obige ist der detaillierte Inhalt vonWie lese ich Pixelwerte aus einem Mehrkanalbild in OpenCV mit C++?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:tutorialspoint.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage