C++下OpenCV学习笔记----访问图像中的像素

C++下OpenCV学习笔记

----访问图像中的像素

一.像素的储存方式
  1. 图像矩阵的大小取决于所用的颜色模型,进一步地说,取决于所用的通道数。
  2. OpenCV中子列的通道顺序为BGR。
  3. 判断矩阵是否连续储存:isContinuous( )函数
    (1)连续存储是返回true,否则返回false。
    (2)Mat的数据部分存储是按照行进行存储的,相同行内的数据是连续存储,行与行之间的存储是否有间隙,可以通过isContinuous函数来判断。对于1*1或1*N矩阵总是连续的,一般使用Mat::create创建的矩阵总是连续的,而如果使用Mat::col,Mat::diag等提取的矩阵一部分,或者外部分配的数据构造矩阵头,则此类矩阵可能不再连续存储。
    (3)代码实现
#include<opencv2/opencv.hpp>
#include<iostream>
using namespace cv;
using namespace std;
int main()
{
   
	Mat src = imread("C:\\Users\\441\\Desktop\\ZL\\夏目\\1.jpg");
	cout << "Is continuous?       ";
	if (src.isContinuous())
		cout << "YES." << endl;
	else
		cout << "NO." << endl;
	Mat src1(src, Rect(250, 125, 250, 150));
	cout << "Is continuous?       ";
	if (src1.isContinuous())
		cout << "YES." << endl;
	else
		cout << "NO." << endl;
	return 0;
}

        (4)运行结果
在这里插入图片描述

二.颜色空间缩减(color space reduction)
  1. 定义:将现有颜色空间值除以某个输入值,以获得较少的颜色数。即做减法,比如颜色值0到9可取为新值0, 10到19可取为10,以此类推。
  2. 意义:可大大降低运算的复杂度。
  3. 简单的算法组成:
    (1)遍历图像矩阵的每一个像素
    (2)对像素运用缩减公式
  4. 代码实现(主函数)
#include<opencv2/opencv.hpp>
#include<iostream>
using namespace cv;
using namespace std;
void colorReduce(Mat& inputImage, Mat& outputImage, int div)

int main()
{
   
	Mat src = imread("C:\\Users\\441\\Desktop\\ZL\\夏目\\1.jpg");
	imshow("原始图像",src);
	Mat dst;
	dst.create(src.rows, src.cols, src.type());
	double time = static_cast<double>(getTickCount());
	colorReduce(src, dst, 128);  //缩减128倍
	time 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

X to Y

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值