Computer >> Máy Tính >  >> Lập trình >> C ++

Làm cách nào để đọc giá trị pixel của một hình ảnh kênh đơn trong OpenCV bằng C ++?

Hình ảnh kỹ thuật số được làm bằng pixel. Sử dụng OpenCV, có thể dễ dàng đọc giá trị của các pixel. Tuy nhiên, nếu chúng ta muốn nhận các giá trị pixel, chúng ta phải xử lý một kênh riêng lẻ.

Ở đây chúng tôi đang tải một hình ảnh trong ma trận có tên 'cimage', sau đó nó chuyển đổi hình ảnh bằng cách sử dụng 'cvtColor (cimage, img, COLOR_BGR2GRAY); ' và lưu trữ nó trong ma trận có tên 'img'.

Chương trình sau đây đọc giá trị pixel của hình ảnh và hiển thị các giá trị trong cửa sổ bảng điều khiển.

Ví dụ

#include<iostream>
#include<opencv2/highgui/highgui.hpp>
#include<opencv2/opencv.hpp>
using namespace std;
using namespace cv;
int main() {
   int x;//Declaring an integer variable to hold values of pixels//
   Mat cimage = imread("colors.jpg");//loading an image//
   Mat img;//Declaring an empty matrix to store converted image//
   cvtColor(cimage, img, COLOR_BGR2GRAY);//Converting loaded image to grayscale image//
   for (int i = 0; i < img.rows; i++)//loop for rows// {
      for (int j = 0; j < img.cols; j++)//loop for columns// {
         x = (int)img.at<uchar>(i, j);//storing value of (i,j) pixel in variable//
         cout << "Value of pixel" << "(" << i << "," << j << ")" << "=" << x << endl;//showing the values in console window//
      }
   }
   imshow("Show", img);//showing the image//
   waitKey();//wait for keystroke from keyboard//
   return 0;
}

Đầu ra

Làm cách nào để đọc giá trị pixel của một hình ảnh kênh đơn trong OpenCV bằng C ++?