数字图像处理作业使用OpenCV - 使用笔记
数字图像处理作业的输入图像全部都是灰度图像,所以汇总一下自己遇到的问题答案。
- OCV的图像容器是Mat<typename>,可以用imread(filename)读取图像,filename是c string,char*和const char*都行。灰度图像的typename是uchar,RGB图像的typename是Vec3b。
- Mat容器如果直接使用操作符赋值,只会复制一份信息头而不会复制包含数据的矩阵,由此而降低内存的浪费和速度,所以这样得到的多个Mat对象都指向同一个数据矩阵,换句话说,如果一个对象对矩阵进行了操作,那么其他也指向这个矩阵的对象也会发现他们的矩阵改变了。
- 遍历像素可以使用Mat::at<typename>(i, j),对于灰度图像,typename=uchar,on-the-fly方式,最慢哦_(:з」∠)_;uchar指针遍历(最好先判断isContinuous(),这样就可以将二维矩阵改变为一维的数组);迭代法,这是最安全的,不会出现指针越界,而且对于灰度图像,不管是不是连续的,都可以用begin和end当做一维数组来遍历;最后是核心函数LUT,最快,但是不太懂。几种方法请点击这里
- 检验图像是否被成功读入的方法是使用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 - 使用笔记的更多相关文章
- 数字图像处理作业使用OpenCV - 块提取
今天要记录的是树图第二次作业的第二题,Image Patch Extraction.这个概念真的不难懂,但是如果要我实际写的话,还真的不知道要怎么去遍历图像矩阵来提取块.在此要多谢邓大神的热心帮助,告 ...
- 数字图像处理作业使用OpenCV - 自定义直方图
第二次作业需要打印出来灰度直方图,当然不能使用ocv的自带calcHist函数来得到Mat对象了……结果上网搜索怎么用自己的数据创建直方图,搜到的都是直接用函数的_(:з」∠)_ 结果这个地方拖了好久 ...
- 数字图像处理作业使用OpenCV - 配置
使用环境:Windows7 旗舰版 + vs2008 + OpenCV2.0a 基本上配置都是通过网上一个教程,在此附上地址 Click ME. 为了避免因不同版本而出现的安装问题,我还是下载了2.0 ...
- BJUT数字图像处理作业
一. n的正方形图像,用FFT算法从空域变换到频域,并用频域图像的模来进行显示. 2) 使图像能量中心,对应到几何中心,并用频域图像的模来进行显示. 3)将频域图象,通过FFT逆变换到空域,并显示. ...
- 《HALCON数字图像处理》第六章笔记
目录 第六章 图像增强 图像增强的概念和分类 灰度变换 直方图处理 图像的平滑 图像的锐化 图像的彩色增强 我在Gitee上建了个仓库,会将学习书本的时候打的一些代码上传上去,笔记中所有代码都在仓库里 ...
- 《HALCON数字图像处理》第五章笔记
目录 第五章 图像运算 图像的代数运算 加法运算 图像减法 图像乘法 图像除法 图像逻辑运算(位操作) 图像的几何变换 图像几何变换的一般表达式 仿射变换 投影变换 灰度插值 图像校正 我在Gitee ...
- 《HALCON数字图像处理》第四章笔记
目录 第四章 HALCON数据结构 HALCON Image图像 图像通道 HALCON Region区域 Region的初步介绍 Region的点与线 Region的行程 Region的区域特征 H ...
- 《HALCON数字图像处理》第三章笔记
目录 第三章 HALCON图像处理基础 HALCON控制语句 HALCON算子 HALCON图像处理入门 HALCON图像读取 HALCON图像显示 图形窗口 图像显示 显示文字 HALCON图像转换 ...
- 数字图像处理笔记与体会(一)——matlab编程基础
最近开始学习数字图像处理,使用matlab实现,下面我就来记录笔记和体会,一方面是给大家提供参考,另一方面是防止我忘记了. 复习一下: 1.数字图像是用一个数字矩阵来表示的,数字阵列中的每个数字,表示 ...
随机推荐
- 时间轴感----Allen Pike
动画要跑在60fps下.这意味着每一帧需要花费16ms来跑完(1000ms/60=16).这是要达到原生应用般平滑体验的最基本要求.60 fps是所有的iOS的内置动画运行的速度;这就是为什么滚动在i ...
- busybox的编译、使用及安装
转载于:http://blog.sina.com.cn/wyw1976 busybox是什么? (1)busybox是Linux上的一个应用程序(application),即只有一个ELF文件头. ( ...
- 老电脑如果从windows7升级到windows10不断重启进不了系统,还是想用windows10,怎么办?
先说一下我的配置:08年的acer aspire 5520g,很老的电脑,除了内存加到4g,其他都不变.官方只支持到windows7,并且官方说明该型号不在官方支持windows10之列. 之前win ...
- AOP和IOC的实现原理(用到的设计模式)
文章来源:http://blog.csdn.NET/longyulu/article/details/36174979 用过spring的朋友都知道spring的强大和高深,都觉得深不可测,其实当你真 ...
- Java Bean Validation 最佳实践
参数校验是我们程序开发中必不可少的过程.用户在前端页面上填写表单时,前端js程序会校验参数的合法性,当数据到了后端,为了防止恶意操作,保持程序的健壮性,后端同样需要对数据进行校验.后端参数校验最简单的 ...
- (转)jQuery源码解读 -- jQuery v1.10.2
原文GitHub链接: https://github.com/chokcoco/jQuery-
- 自适应css 框架 PURE
Bootstrap 好用 但是太大啦 有时候只需要用到媒体查询这一块的样式 Pure.css可以很好地替代 直接上地址咯: http://purecss.io/ https://unpkg.com/p ...
- python 学习笔记十二 CSS基础(进阶篇)
1.CSS 简介 CSS 指层叠样式表 (Cascading Style Sheets) 样式定义如何显示 HTML 元素 样式通常存储在样式表中 把样式添加到 HTML 4.0 中,是为了解决内容与 ...
- HTTP 错误 403.14 - Forbidden Web 服务器被配置为不列出此目录的内容
今天把一个.NET的网站部署到IIS上打开网页的时候出现了这个错误,刚开始以为是没有配置默认页,但是直接打开固定的页面地址也不行. 于是怀疑是.NET版本的问题,但是看了一下程序的目标框架是4.0没错 ...
- 微信小程序-发起请求
wx.request(object) wx.request发起的是https请求.一个微信小程序,同时只能有5个网络请求连接. object参数说明: 示例代码: wx.request({ url: ...