学习opencv的减色方法时,看到代码如下:

void CBasicImageProcessing::colorReduce_binaryMask(cv::Mat image, int div)
{int nl = image.rows;//行数int nc = image.cols * image.channels();//列数int n = static_cast<int>(log(static_cast<double>(div)) / log(2.0) + 0.5);//将div转化为2的幂指数uchar mask = 0xFF << n;uchar div2 = 1 << (n - 1);for (int j = 0; j < nl; j++){uchar* data = image.ptr<uchar>(j);//指向第j行的第一个像素for (int i = 0; i < nc; i++){*data &= mask;//取整*data++ |= div2;//加上div2,并指向下一个像素}}
}

其中,这一行

 uchar* data = image.ptr<uchar>(j)

表示,指针data指向图像第j行的第一个数据。
如果将*data的数据按照下面的形式输出

int a=static_cast<int>(*data);
cout<<a;

可以看到输出的是0-255之间的值。
那么data就是代表第一个像素的第一通道的数值。
从前面的
int nc = image.cols * image.channels();
这一句可以看出,每一行是像素的个数( image.cols)乘以通道数(image.channels()),每次
data++,其实是移动指针指向下一个通道。对于灰度图,通道数为1,每次移动就是指向下一个像素。
对于彩色的三通道图像,每个通道的数值由0-255组成。

对uchar* data = image.ptr<uchar>(j)的理解相关推荐

  1. nstall.php a data,通过Typecho install.php 后门理解PHP对象注入 - 嘶吼 RoarTalk – 回归最本质的信息安全,互联网安全新媒体,4hou.com...

    刚好在学习PHP反序列化,听说有这么个后门,尝试着分析下,可能有写的不对的地方,还请指教.首先介绍下序列化与反序列化.序列化是对象串行化,对象是一种在内存中存储的数据类型,寿命随生成该对象的程序的终止 ...

  2. data的值 如何初始化vue_理解Vue响应式系统

    深入理解 Vue 响应式系统 理解 Vue 响应式原理,到 computed.vuex 原理 前言 众所周知,一说到 vue 的响应式系统,就能马上想到 Object.defineProperty.数 ...

  3. java中j=j++和j=++j的理解

    先来看一段程序: public class Test1 {public static void main(String[] args) {int j = 0;for(int i = 0; i < ...

  4. OpenCV3学习(2.1)——图像Mat数据的访问-at/ptr/iterator

    Mat中像素的获取与赋值 图像就是一系列像素值,OpenCV使用数据结构cv::Mat来存储图像.cv::Mat是一个矩阵类,矩阵中每一个元素都代表一个像素,对于灰度图像,像素用8位无符号数,0表示黑 ...

  5. 《OpenCV3编程入门》学习笔记5 Core组件进阶(一)访问图像中的像素

    第5章 Core组件进阶 5.1 访问图像中的像素 5.1.1 图像在内存中的存储方式 1.图像矩阵大小取决于通道数,矩阵中的子列个数与通道数相等. 2.如果内存足够大,可以实现连续存储,有助于提升图 ...

  6. OpenCV 像素存储

    像素存储 OpenCV 中图像矩阵的大小取决于所用的颜色模型,更准确的说是取决于图像所用到的通道数. 如果使用的是灰度图,矩阵大概如图所示: 如果使用的是多通道的图像,矩阵中的列会包含多个子列,子列的 ...

  7. 颜色缩减(带Trackbar)【从毛星云Opencv3编程入门P75 P111例程改编】

    最近学了点opencv,买了毛星云的书,大力推荐哦. 颜色缩减,自己加了个Trackbar看起来更直观一些. 我一般自己先看一遍程序,脑子里有个大概印象了,再自己写一遍,这样出了错误会印象更深刻. 1 ...

  8. 【从零学习openCV】opecv操作像素

    1. 存取像素值 在opencv中能够直接对cv::Mat类型的图像调用at函数读取或赋值某个像素,我们用个简单的案例来说明: //在一张图像上增加椒盐噪声,image为输入图像.n为噪点个数 voi ...

  9. 用形态学的方法实现图像的角点检测

    图像处理开发需求.图像处理接私活挣零花钱,请加微信/QQ 2487872782 图像处理开发资料.图像处理技术交流请加QQ群,群号 271891601 形态学角点检测原理:根据角点形态学特征性质,对原 ...

最新文章

  1. Linux运维实战之用户和组
  2. pandas 索引_10分钟带你学会Pandas多层级索引
  3. PostgreSQL9.5和JSONB的强大功能
  4. 线性表adt的c语言表达,抽象数据类型定义(ADT)
  5. 《现代操作系统》(第4版)文件系统 课后习题解答
  6. mediumtext和string转换_数据类型 - 字符串类型 - 《TiDB v3.0 用户文档》 - 书栈网 · BookStack...
  7. AtCoder AGC037E Reversing and Concatenating
  8. C++之(pair)用法总结
  9. uva 11995 I Can Guess the Data Structure!
  10. 武汉城市职业学院计算机分数线,武汉城市职业学院历年分数线 2021武汉城市职业学院录取分数线...
  11. Linux编程手册读书笔记第五章(20140408)
  12. .net md5 java 偏移量_C# java MD5加密方不一致问题
  13. web.config中配置数据库连接的两种方式
  14. jquery的mCustomScrollbar滚动条创建在ie8下报frameElement的相关错
  15. 好开心,明天就上班了
  16. 从零开始使用Nadam进行梯度下降优化
  17. centos7安装tomcat8
  18. GhostScript命令参数详解
  19. 【JS 逆向百例】某音 X-Bogus 逆向分析,JSVMP 纯算法还原
  20. Vue v-modle理解

热门文章

  1. caj双击没反应的解决方法
  2. VTK笔记-裁剪分割-几何裁剪-vtkClipPolyData
  3. 零基础入门WordPress安装详细教程(图文)
  4. DDR扫盲——DDR与DDR2、DDR3的区别
  5. 没迈过PRA的门槛 企业谈何“人工智能”
  6. 小Y看浮屠世界-往复式单螺杆混炼挤出机构造特征及其运用
  7. #力扣 LeetCode1646. 获取生成数组中的最大值 @FDDLC
  8. 流媒体-H264协议-编码-x264学习-相关概念x264编译及文件解析(一)
  9. mdio phy(bcm5482)访问
  10. ios11修改微信步数_iOS逆向之“修改微信运动步数”