cv mat 灰度值和_访问OpenCV中灰度图像的像素值

这篇博客介绍了如何使用OpenCV的cv::Mat对象访问1通道灰度图像的像素值。通过遍历矩阵并打印cv::Mat的at()函数获取的值,展示了如何查看和修改图像的像素。同时指出,对于灰度图像,其类型应该是CV_8UC1,而不是CV_32FC1。实验中,可以通过改变像素值并显示图像来直观理解这一过程。
摘要由CSDN通过智能技术生成

我只是想让我的概念清楚 - 访问cv :: Mat的所有矩阵元素意味着我实际上访问图像的所有像素值(灰度 - 1通道和颜色 - 3通道)? 就像我的代码打印加载的1通道图像的灰度矩阵的值和类型CV_32FC1,如下所示,那么这是否意味着我只访问cv :: mat的成员,或者我正在访问图像的像素值(1通道 - 灰度和类型CV_32FC1)也?cv::Mat img = cv::imread("lenna.png");

for(int j=0;j

{

for (int i=0;i

{

std::cout << "Matrix of image loaded is: " << img.at(i,j);

}

}

我对使用OpenCV进行图像处理相当陌生,并想清除我的想法。 如果我错了,那我怎样才能访问图像的每个像素值?

您正在访问矩阵的元素,并且您也正在访问图像本身。 在您的代码中,执行此操作后: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

{

for (int i=0;i

{

if( i== j)

img.at(j,i) = 255; //white

}

}

//After changing

cv::imshow("After",img);

注意:这只会改变易失性存储器中的图像值,即当前加载mat img的位置。 修改mat img的值,不会更改存储在磁盘中的实际图像“lenna.png”中的值(除非您执行imwrite)

但是在1通道灰度图像的情况下,它是CV_8UC1而不是CV_32FC1

为了获得灰度图像的像素值(0到255之间的整数),还需要对答案进行类型化。int pixelValue = (int)img.at(i,j);

链接地址: http://www.djcxy.com/p/89811.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值