Maison >développement back-end >C++ >Comment lire les valeurs de pixels d'une image multicanal dans OpenCV en utilisant C++ ?

Comment lire les valeurs de pixels d'une image multicanal dans OpenCV en utilisant C++ ?

王林
王林avant
2023-09-08 20:13:10973parcourir

Comment lire les valeurs de pixels dune image multicanal dans OpenCV en utilisant C++ ?

Nous avons déclaré trois variables, à savoir 'blue_Channel', 'green_channel' et 'red_channel'. Le but de ces variables est de conserver les valeurs des pixels. Nous utilisons ces variables dans la « boucle for ». Ensuite, nous déclarons une matrice appelée 'color_Image_Matrix'.

La syntaxe de cette méthode est la suivante :

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

Nous utilisons une image BGR. Il dispose de trois chaînes. Ces canaux conservent un ordre spécifique, color_image_Matrix.at (i, j) représente la valeur du pixel à la position (i, j) et [0] représente le premier canal. Par exemple, si nous écrivons cette ligne de code comme suit :

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

Cela signifie que la variable 'blue_Channel' aura la valeur de pixel du premier canal située à (30, 35). C'est ainsi que nous pouvons accéder aux valeurs de pixels en utilisant). OpenCV.

Le programme suivant lit les valeurs de pixels de différentes images RVB et affiche la valeur des différents pixels du canal dans une fenêtre de console

Exemple

#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;
}

Sortie

Image read successfully...

Ce programme prend quelques minutes à s'exécuter. Il lit chaque valeur de pixel à partir d'un canal différent. C'est pourquoi il faut quelques minutes pour que les résultats complets apparaissent.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer