OpenCV 数组存储图片像素值,便于后期图像处理

本文介绍了如何使用OpenCV的cv::Mat::at方法读取和存储图像的像素值到数组中,重点关注图像处理的基础——像素操作。通过数组存储RGB三通道像素值,然后利用OpenCV的Mat格式进行后续的图像处理操作。
摘要由CSDN通过智能技术生成

    刚开始接触到OpenCV,本身是想学借助OpenCV的库来进行图像处理学习的,后来发现OpenCV将所有的东西都集成起来了,对于打算学习图像处理来说这样反而不是什么好事;

    在我看来,图像处理基本基于对像素值得处理,那么我们尽可能的用数组来存储像素值,对于OpenCV来说不便于按照我们的做法来对图片进行处理。但是OpenCV给我们集成了cv::Mat::at这样一个结构,用于读取图片的像素值,那么我们就可以使用它来将像素值存储在数组中了。

    image.at<Vec3b>(row, col)[i]可以读取到图片中的像素值,row为行、col为列、i为RGB的第几通道。

for (int row = 0; row < image.rows; row++)      //行
	{
		for (int col = 0; col < image.cols; col++)  //列
		{
			for (int i = 0; i < 3; i++)
			{
				str[row * 400 * 3 + col * 3 + i] = image.at<Vec3b>(row, col)[i];
			}
		}
	}

    这样我们就可以将image图片中的像素值保存到str数组中,我们采用的是三通道RGB图片,在数组中的存储顺序是B,G,R。

    但是这里有个缺陷就是我们需要首先数组的长度,那么就意味着对应的图片长宽是固定的。

    对于之后的图像显示,我仍然使用了能被openCV处理的Mat格式图像数据,就是对指向图像的指针生成Mat格式的图像数据。


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值