代码改变世界

随笔档案-2011年11月

opencv新手注意

2011-11-29 21:00 by libing64, 382 阅读, 收藏,
摘要: 注意事项1 看如下代码:CvScalar s = cvScalar(20.0);由于opencv不是真正的类,因此构造函数和类名不一致,构造函数的首字母是小写的!!!!!opencv乃是用C写的,因此尽管含有类的思想,但是不是类,而是结构,不是构造函数,而是内联函数。注意字母的大小写~2 如果仅是采用opencv而使用C语言编写程序,注意变量的定义在C语言中只能在每一个函数的开头,不能像C++一样在函数的任何位置都可以定义变量~3 既然C++是基本完全兼容C的,而C++类的特性又十分适合编写大型的程序,完全可以用C++来编写程序,只需新建文件的时候文件后缀名改为.CPP即可。4 在受用open 阅读全文

sift实现的双目测距

2011-11-13 21:30 by libing64, 4844 阅读, 收藏,
摘要: 最近一直在做双目测距的工作,今天终于获得一定的成果~拿出来与大家分享~一、源码下载:http://download.csdn.net/detail/renshengrumenglibing/3791149二、硬件:三、匹配效果:四、基本算法 参见学习opencv中关于双目测距的算法最关键的Z = fx*T/(x2 - x1)五、基本参数:摄像头间距:T = 187mm由于在实际测量过程中,发现摄像机的焦距并非固定不变的,在标定的时候会发现,随着距离的变大,测量的焦距逐渐变大,于是采用测量多组的的数据拟合 出摄像头的焦距公式求取焦距与实际距离的拟合公式:fx = g(distance)实际距离 阅读全文

opencv图像处理9-图像金字塔

2011-11-06 10:57 by libing64, 827 阅读, 收藏,
摘要: 图像金字塔在分割和匹配方面有重要用途,其中在sift匹配中是重要的一环~~先看效果:PyrDown图像的下采样void cvPyrDown( const CvArr* src, CvArr* dst, int filter=CV_GAUSSIAN_5x5 );src输入图像.dst输出图像, 宽度和高度应是输入图像的一半 ,传入前必须已经完成初始化filter卷积滤波器的类型,目前仅支持 CV_GAUSSIAN_5x5函数 cvPyrDown 使用 Gaussian 金字塔分解对输入图像向下采样。首先它对输入图像用指定滤波器进行卷积,然后通过拒绝偶数的行与列来下采样图像。PyrUp图像的上采样 阅读全文

opencv图像处理8-卷积

2011-11-06 10:46 by libing64, 1614 阅读, 收藏,
摘要: 卷积是本章所讨论的很多转换的基础。先看看效果:抽象的说,这个术语意味着我们对图像的每一个部分所做的操作。从这个意义上讲,我们在第五章所看到的许多操作可以被理解成普通卷积的特殊情况。一个特殊的卷积所实现的功能是由所用的卷积核的形式决定的。这个核本质上是一个大小固定,由数值参数构成的数组,数组的标定点通常位于数组的中心。数组的大小被称为核支撑。单就技术而言,核支撑实际上仅仅由核数组的非零部分组成。图6-1描述了以数组中心为定标点的3×3卷积核。若要计算一个特定点的卷积值,首先将核的标定点定位到图像的第一个像素点,核的其余元素覆盖图像中其相对应的局部像素点。对于每一个核点,我们可以得到这个 阅读全文

opencv图像处理7-打开大图

2011-11-05 23:33 by libing64, 710 阅读, 收藏,
摘要: 显示大图片,当图片较大时,可以通过鼠标拖动图片上下移动先看效果:由于opencv没有滑动条,无法像VC或者java那样直接滑动浏览,但是在图片上直接拖动也是一样的。拖动时通过捕获鼠标事件,记下按下和抬起的点,CvPoint first = cvPoint(0,0);CvPoint last = cvPoint(0,0);void on_mouse(int event ,int x, int y,int flags, void*param){switch(event){case CV_EVENT_LBUTTONDOWN:{first.x = x;first.y = y;}case CV_EVEN 阅读全文

图像处理--多个平台下双目视觉的实现

2011-11-05 17:46 by libing64, 2649 阅读, 收藏,
摘要: VC6.0下的实现双目视觉见另一篇博客:http://blog.csdn.net/renshengrumenglibing/article/details/6884124这里主要讲解在opencv2.3+VS10下的实现,opencv2.1+VS10跟这个类似,但是需要逆序打开摄像头。先看效果:打开三个摄像头:两个USB摄像头一个联想自带的摄像头双目视觉实现总结:一、VC6.0+opencv1.0实现双目视觉时,采用的是使用了directshow的一个类CameraDShttp://blog.csdn.net/renshengrumenglibing/article/details/68841 阅读全文

图像处理-sift算法

2011-11-02 19:01 by libing64, 2357 阅读, 收藏,
摘要: sift是图像匹配的非常经典的算法,但是很复杂,要想自己拿C或C++实现很麻烦,如果只是使用的话,有国外某高人维护的sift库,前期只要自己能够调用即可,关键是要熟悉大致的流程,对sift库有个了解,具体的工作只要调用其中的函数即可。匹配效果:sift是图像匹配的非常经典的算法,但是很复杂,要想自己拿C或C++实现很麻烦,如果只是使用的话,有国外某高人维护的sift库,前期只要自己能够调用即可,关键是要熟悉大致的流程,对sift库有个了解,具体的工作只要调用其中的函数即可。一、sift简介1、sift算法应用典型场合: 物体识别 机器人定位与导航 图像拼接 三维建模 手势识别 视频跟踪 笔记鉴 阅读全文