opencv 怎么取到灰度图像的像素值,C++接口的
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了opencv 怎么取到灰度图像的像素值,C++接口的相关的知识,希望对你有一定的参考价值。
cv::Mat image=cv::imread("a.jpg");
cv::Mat image2;
image2.create(image.rows,image.cols,image.type());
cv::cvtColor(image,image2,CV_BGR2GRAY);
怎么取出image2在某点的像素值
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;
输出:
参考技术A #include"cv.h"#include"highgui.h"
#include <iostream>
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<height;row++)
uchar* ptr = (uchar*)src->imageData+row*src->width;//获得灰度值数据指针
for (size_t cols=0;cols<width;cols++)
int intensity=ptr[cols];
cout<<intensity<<" ";
return 0;
追问
谢谢你 不过这个是c接口的,我大概已经想起了,遍历Mat即可
本回答被提问者和网友采纳以上是关于opencv 怎么取到灰度图像的像素值,C++接口的的主要内容,如果未能解决你的问题,请参考以下文章