Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk membaca nilai piksel daripada imej berbilang saluran dalam OpenCV menggunakan C++?

Bagaimana untuk membaca nilai piksel daripada imej berbilang saluran dalam OpenCV menggunakan C++?

王林
Lepaskan: 2023-09-08 20:13:10
ke hadapan
980 orang telah melayarinya

Bagaimana untuk membaca nilai piksel daripada imej berbilang saluran dalam OpenCV menggunakan C++?

Kami mengisytiharkan tiga pembolehubah iaitu 'blue_Channel', 'green_channel' dan 'red_channel'. Tujuan pembolehubah ini adalah untuk memegang nilai piksel. Kami menggunakan pembolehubah ini dalam 'untuk gelung'. Kemudian, kami mengisytiharkan matriks yang dipanggil 'color_Image_Matrix'.

Sintaks kaedah ini adalah seperti berikut:

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

Kami menggunakan imej BGR. Ia mempunyai tiga saluran. Saluran ini mengekalkan susunan tertentu, color_image_Matrix.at (i, j) mewakili nilai piksel pada kedudukan (i, j), dan [0] mewakili saluran pertama. Sebagai contoh, jika kita menulis baris kod ini seperti berikut:

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

Ini bermakna pembolehubah 'blue_Channel' akan mempunyai nilai piksel saluran pertama terletak di(30, 35 Ini adalah cara kita boleh mengakses nilai piksel menggunakan). OpenCV.

Atur cara berikut membaca nilai piksel imej RGB yang berbeza dan memaparkan nilai piksel saluran yang berbeza dalam tetingkap konsol

Contoh

#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;
}
Salin selepas log masuk

Output

Image read successfully...
Salin selepas log masuk

Program ini mengambil masa beberapa minit untuk dijalankan. Ia membaca setiap nilai piksel dari saluran yang berbeza. Itulah sebabnya ia mengambil masa beberapa minit untuk hasil penuh muncul.

Atas ialah kandungan terperinci Bagaimana untuk membaca nilai piksel daripada imej berbilang saluran dalam OpenCV menggunakan C++?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:tutorialspoint.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan