Maison > développement back-end > C++ > le corps du texte

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

王林
Libérer: 2023-09-08 20:13:10
avant
962 Les gens l'ont consulté

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];
Copier après la connexion

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];
Copier après la connexion

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;
}
Copier après la connexion

Sortie

Image read successfully...
Copier après la connexion

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!

Étiquettes associées:
source:tutorialspoint.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal