如何使用 C++ 在 OpenCV 中读取单通道图像的像素值?

opencvc++server side programmingprogramming

数字图像由像素组成。使用 OpenCV 可以轻松读取像素值。但是,如果我们想要获取像素值,则必须单独处理单个通道。

这里我们将图像加载到名为"cimage"的矩阵中,然后使用"cvtColor(cimage, img, COLOR_BGR2GRAY); "转换图像并将其存储在名为"img"的矩阵中。

以下程序读取图像的像素值并在控制台窗口中显示该值。

示例

#include<iostream>
#include<opencv2/highgui/highgui.hpp>
#include<opencv2/opencv.hpp>
using namespace std;
using namespace cv;
int main() {
   int x;//声明一个整型变量来保存像素值//
   Mat cimage = imread("colors.jpg");//加载图像//
   Mat img;//声明一个空矩阵来存储转换后的图像//
   cvtColor(cimage, img, COLOR_BGR2GRAY);//将加载的图像转换为灰度图像//
   for (int i = 0; i < img.rows; i++)//循环遍历行// {
      for (int j = 0; j < img.cols; j++)//循环遍历列// {
         x = (int)img.at<uchar>(i, j);//将 (i,j) 像素的值存储在变量中//
         cout << < "像素值" << "(<<< i << ",<< j << ")<< <=<< x << endl;//在控制台窗口中显示值//
      }
   }
   imshow(&"Show<, img);//显示图像//
   waitKey();//等待键盘按键//
   return 0;
}

输出


相关文章