Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/145.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ OpenCV中灰度图像像素值的获取_C++_Opencv_Image Processing - Fatal编程技术网

C++ OpenCV中灰度图像像素值的获取

C++ OpenCV中灰度图像像素值的获取,c++,opencv,image-processing,C++,Opencv,Image Processing,我只是想弄清楚我的概念——访问cv::Mat的所有矩阵元素意味着我实际上正在访问图像的所有像素值(灰度-1通道,颜色-3通道)?假设我用于打印灰度矩阵值(加载了一个通道图像并键入CV_32FC1)的代码如下所示,那么这是否意味着我只访问CV::mat的成员,或者我也访问图像的像素值(带有一个通道-灰度并键入CV_32FC1) cv::Mat img=cv::imread(“lenna.png”); 对于(int j=0;j您正在访问矩阵的元素,同时也在访问图像本身。在代码中,执行此操作后: c

我只是想弄清楚我的概念——访问cv::Mat的所有矩阵元素意味着我实际上正在访问图像的所有像素值(灰度-1通道,颜色-3通道)?假设我用于打印灰度矩阵值(加载了一个通道图像并键入CV_32FC1)的代码如下所示,那么这是否意味着我只访问CV::mat的成员,或者我也访问图像的像素值(带有一个通道-灰度并键入CV_32FC1)

cv::Mat img=cv::imread(“lenna.png”);

对于(int j=0;j您正在访问矩阵的元素,同时也在访问图像本身。在代码中,执行此操作后:

 cv::Mat img = cv::imread("lenna.png");
矩阵img表示图像lenna.png。(如果成功打开)

为什么不通过更改一些像素值来进行试验:

 cv::Mat img = cv::imread("lenna.png");
//Before changing
cv::imshow("Before",img);
//change some pixel value
for(int j=0;j<img.rows;j++) 
{
  for (int i=0;i<img.cols;i++)
  {
    if( i== j)   
       img.at<uchar>(j,i) = 255; //white
  }
}
//After changing
cv::imshow("After",img);
cv::Mat img=cv::imread(“lenna.png”);
//更换前
cv::imshow(“之前”,img);
//改变一些像素值

对于(int j=0;j为了获得灰度图像的像素值(介于0和255之间的整数),还需要键入答案

int pixelValue = (int)img.at<uchar>(i,j);
int像素值=(int)img.at(i,j);

cv::Mat的值代表像素值。因此,你是对的。应该是:
img.at(j,i)=255;//white
(行/列错误)@Barshan Das你能详细说明你的观点吗“但在单通道灰度图像的情况下,它是cv_8UC1而不是cv_32FC1”。这意味着什么?@user227666:我想说,对于单通道灰度图像,每个像素值是8位无符号字符,而不是32位无符号浮点。给像素赋值是在CLion中给我SIGABRT。
int pixelValue = (int)img.at<uchar>(i,j);