opencv 怎么取到灰度图像的像素值,C++接口的

2024-12-21 20:16:35
推荐回答(2个)
回答1:

opencv获取灰度图像的像素值的方法如下:

int main()
{    
   Mat img = imread("lena.jpg");
   imshow("Lena Original", img);

   for (int row = 0; row < img.rows; row++)
   {
       for (int col = 0; col < img.cols; col++)
       {
           //主要是这里的代码
           if(*(img.data + img.step[0] * row + img.step[1] * col + img.elemSize1() * 2) > 128)
           {
               //[row, col]像素的第 1 通道地址被 * 解析(blue通道)
               *(img.data + img.step[0] * row + img.step[1] * col) = 255;
               //[row, col]像素的第 2 通道地址被 * 解析(green通道), 关于elemSize1函数的更多描述请见 Fn1 里所列的博文链接
               *(img.data + img.step[0] * row + img.step[1] * col + img.elemSize1()) = 255;
               //[row, col]像素的第 3 通道地址被 * 解析(red通道)
               *(img.data + img.step[0] * row + img.step[1] * col + img.elemSize1() * 2) = 255;
           }
       }
   }
   imshow("Lena Modified", img);
   cvWaitKey();
   return 0;
}

输出:

回答2:

#include"cv.h"
#include"highgui.h"
#include
using namespace std;

int main(int argc, char** argv)
{
IplImage* src = cvLoadImage( "0.bmp", 0 ); //导入图片
int width=src->width;//图片宽度
int height = src->height;//图片高度

for (size_t row=0;row {
uchar* ptr = (uchar*)src->imageData+row*src->width;//获得灰度值数据指针
for (size_t cols=0;cols {
int intensity=ptr[cols];
cout< }
}

return 0;
}