数字图像处理作业的输入图像全部都是灰度图像,所以汇总一下自己遇到的问题答案。

  1. OCV的图像容器是Mat<typename>,可以用imread(filename)读取图像,filename是c string,char*和const char*都行。灰度图像的typename是uchar,RGB图像的typename是Vec3b。
  2. Mat容器如果直接使用操作符赋值,只会复制一份信息头而不会复制包含数据的矩阵,由此而降低内存的浪费和速度,所以这样得到的多个Mat对象都指向同一个数据矩阵,换句话说,如果一个对象对矩阵进行了操作,那么其他也指向这个矩阵的对象也会发现他们的矩阵改变了。
  3. 遍历像素可以使用Mat::at<typename>(i, j),对于灰度图像,typename=uchar,on-the-fly方式,最慢哦_(:з」∠)_;uchar指针遍历(最好先判断isContinuous(),这样就可以将二维矩阵改变为一维的数组);迭代法,这是最安全的,不会出现指针越界,而且对于灰度图像,不管是不是连续的,都可以用begin和end当做一维数组来遍历;最后是核心函数LUT,最快,但是不太懂。几种方法请点击这里
  4. 检验图像是否被成功读入的方法是使用Mat::data,如果没有成功读入的话,这个值会是null,否则返回图像矩阵第一行第一列的指针。

    附上官方教程推荐的高效遍历方法uchar指针代码

 Mat& ScanImageAndReduceC(Mat& I, const uchar* const table)
{
// accept only char type matrices
CV_Assert(I.depth() != sizeof(uchar)); int channels = I.channels(); int nRows = I.rows * channels;
int nCols = I.cols; if (I.isContinuous())
{
nCols *= nRows;
nRows = ;
} int i,j;
uchar* p;
for( i = ; i < nRows; ++i)
{
p = I.ptr<uchar>(i);
for ( j = ; j < nCols; ++j)
{
p[j] = table[p[j]];
}
}
return I;
}

  下面放几个觉得对学习OCV基础很好的博客,其实上面的要点都是从这些来的,感谢他们的分享!

  http://blog.csdn.net/xiaowei_cqu/article/details/7771760

  http://www.cnblogs.com/ronny/p/opencv_road_2.html

数字图像处理作业使用OpenCV - 使用笔记的更多相关文章

  1. 数字图像处理作业使用OpenCV - 块提取

    今天要记录的是树图第二次作业的第二题,Image Patch Extraction.这个概念真的不难懂,但是如果要我实际写的话,还真的不知道要怎么去遍历图像矩阵来提取块.在此要多谢邓大神的热心帮助,告 ...

  2. 数字图像处理作业使用OpenCV - 自定义直方图

    第二次作业需要打印出来灰度直方图,当然不能使用ocv的自带calcHist函数来得到Mat对象了……结果上网搜索怎么用自己的数据创建直方图,搜到的都是直接用函数的_(:з」∠)_ 结果这个地方拖了好久 ...

  3. 数字图像处理作业使用OpenCV - 配置

    使用环境:Windows7 旗舰版 + vs2008 + OpenCV2.0a 基本上配置都是通过网上一个教程,在此附上地址 Click ME. 为了避免因不同版本而出现的安装问题,我还是下载了2.0 ...

  4. BJUT数字图像处理作业

    一. n的正方形图像,用FFT算法从空域变换到频域,并用频域图像的模来进行显示. 2) 使图像能量中心,对应到几何中心,并用频域图像的模来进行显示. 3)将频域图象,通过FFT逆变换到空域,并显示. ...

  5. 《HALCON数字图像处理》第六章笔记

    目录 第六章 图像增强 图像增强的概念和分类 灰度变换 直方图处理 图像的平滑 图像的锐化 图像的彩色增强 我在Gitee上建了个仓库,会将学习书本的时候打的一些代码上传上去,笔记中所有代码都在仓库里 ...

  6. 《HALCON数字图像处理》第五章笔记

    目录 第五章 图像运算 图像的代数运算 加法运算 图像减法 图像乘法 图像除法 图像逻辑运算(位操作) 图像的几何变换 图像几何变换的一般表达式 仿射变换 投影变换 灰度插值 图像校正 我在Gitee ...

  7. 《HALCON数字图像处理》第四章笔记

    目录 第四章 HALCON数据结构 HALCON Image图像 图像通道 HALCON Region区域 Region的初步介绍 Region的点与线 Region的行程 Region的区域特征 H ...

  8. 《HALCON数字图像处理》第三章笔记

    目录 第三章 HALCON图像处理基础 HALCON控制语句 HALCON算子 HALCON图像处理入门 HALCON图像读取 HALCON图像显示 图形窗口 图像显示 显示文字 HALCON图像转换 ...

  9. 数字图像处理笔记与体会(一)——matlab编程基础

    最近开始学习数字图像处理,使用matlab实现,下面我就来记录笔记和体会,一方面是给大家提供参考,另一方面是防止我忘记了. 复习一下: 1.数字图像是用一个数字矩阵来表示的,数字阵列中的每个数字,表示 ...

随机推荐

  1. babel 解构赋值无法问题

    这个东西需要第二级, babel-preset-stage-2,然后再presets里引入stage-2的设置,再plugins离引入对应的插件 { "presets": [&qu ...

  2. angularJS——模块

    一.在讲angularjs的模块之前,我们先介绍一下angular的一些知识点: AngularJS是纯客户端技术,完全用Javascript编写的.它使用的是网页开发的常规技术(HTML,CSS,J ...

  3. JavaScript基本数据类型(较易混淆的几个概念)

    1. var a; typeof a;  控制台输出结果是什么? 解答:a只被声明,而未被初始化,在javascript中,未初始化的变量默认值都为undefined; 2. var s=" ...

  4. Spring配置文件详解

      转自: http://book.51cto.com/art/201004/193743.htm 此处详细的为我们讲解了spring2.5的实现原理,感觉非常有用 spring配置文件是用于指导Sp ...

  5. cmp函数

    cmp(x,y),既可以比较数字大小,也可以比较字符串.如果 x < y 返回 -1, 如果 x == y 返回 0, 如果 x > y 返回 1. 数字的比较 >>> ...

  6. jQuery学习笔记(四)jQuery中的动画

    目录 show()方法和hide()方法 fideIn()方法和fadeOut()方法 slideUp方法和slideDown()方法 自定义动画方法animate toogle(),slideTog ...

  7. 【Spring】非Spring IOC容器下获取Spring IOC上下文的环境

    前言 在Spring Web项目中,有些特殊的时候需要在非Spring IOC容器下获取Spring IOC容器的上下文环境,比如获取某个bean. 版本说明 声明POM文件,指定需引入的JAR. & ...

  8. React 快速入门小记

    大约半个月前,我一直在思考一个问题,Angular.React 和 Vue,究竟该学什么? 听取了几位前辈的意见,也综合考虑了各方面的原因,最终选择了 React,希望我"没有选错" ...

  9. Jenkins console输出乱码???

    jenkins console输出乱码??? 在jenkins中job执行shell,console中出现乱码如下: [WARNING] /home/mtime/data/jenkins/worksp ...

  10. 集​群​t​o​m​c​a​t​+​a​p​a​c​h​e​配​置​文​档

    http://wenku.baidu.com/link?url=M_Lt07e-9KTIHucYgJUCNSxkjWThUuQ2P8axn8q6YmY_yQw7NmijQoDA2wKmi_FQUxwO ...