06 2014 档案
摘要:以下是对《学习OpenCV》一书知识框架的简单梳理转自:http://blog.chinaunix.net/uid-8402201-id-2899695.html一、基础操作 1. 数据类型 数据结构了解 图像相关:cvArr cvMat IplImage 数据数组的维数, 与数据的通道数 见...
阅读全文
摘要:这种理论看的已经够多了,感觉应用价值不大(矫正畸变图像还凑合,用摄像机测距神马的。。。)有始有终吧,简单把内容梳理一下针孔 摄像机模型 —— 过于理想(不能为快速曝光收集足够的光线)透镜可以聚焦足够多的光线到某个点上,使得图像的生成更加迅速 —— 代价,引入畸变摄像机模型焦距针孔中的点 —— 投影中...
阅读全文
摘要:理解物体运动主要包含两个部分:识别和建模识别在视频流后续的帧中找出之前某帧镇南关的感兴趣物体寻找角点可跟踪的特征点都称为角点,从直观上讲,角点(而非边缘)是一类含有足够信息且能从当前帧和下一帧中都能提取出来的点Harris 角点位于图像二阶导数的自相关矩阵有两个最大特征值的地方,这在本质上表示以此点...
阅读全文
摘要:分水岭算法将图像中的边缘转化成“山脉”,将均匀区域转化为“山谷”分水岭算法首先计算灰度图像的梯度,这对山谷或没有纹理的盆地(亮度值低的点)的形成有效,也对山头或图像中没有主导线段的山脉(山脊对应的边缘)的形成有效。然后开始从用户指定点或算法得到的点开始“灌注”盆地知道这些区域连在一起。基于这样产生的...
阅读全文
摘要:背景减除一旦背景模型建立,将背景模型和当前的图像进行比较,然后减去这些已知的背景信息,则剩下的目标物大致就是所求的前景目标了缺点 —— 该方法基于一个不长成立的假设:所有像素点是独立的场景建模新的前景(物体移动的新位置) —— 旧的前景 (物体离开后留下的“空洞”)—— 背景cvInitLineIt...
阅读全文
摘要:把检测出的边缘像素组装成轮廓 —— cvFindContoursOpenCV 使用内存存储器来统一管理各种动态对象的内存。内存存储器在底层被实现为一个有许多相同大小的内存块组成的双向链表内存储器可以通过四个函数访问 : cvCreateMemStorage(创建一个内存存储器,0采用默认大小) cv...
阅读全文
摘要:直方图就是对数据进行统计,将统计值组织到一系列事先定义好的bin中。bin中的数值是从数据中计算出来的特征的统计量,这些数据可以是诸如梯度,方向,色彩或任何其他特征。直方图获得是是数据分布的统计图直方图的基本数据结构 CvHistogram创建一个新的直方图 cvCreateHist dims 直方...
阅读全文
摘要:将一副图像转变成另一种表现形式 ,比如,傅里叶变换将图像转换成频谱分量卷积 —— 变换的基础cvFilter2D 源图像 src 和目标图像 dst 大小应该相同注意:卷积核的系数应该是浮点类型的,必须用 CV_32F 来初始化矩阵cvFilter2D 函数内部处理边界 —— cvCopyMakeB...
阅读全文
摘要:使用图像结构中所定义的高层处理方法(图形和视觉范畴)来完成特定任务平滑处理 cvSmooth处理后图像与输入图像的大小相同(不用考虑边缘)中值滤波 CV_MEDIAN 不支持 in place 操作 , 高斯滤波 CV_GAUSSIAN 支持 in place 操作(可以设置高斯核不对称,双边滤波—...
阅读全文
摘要:分为:硬件相关部分,文件部分以及图形用户接口部分创建窗口 —— cvNamedWindow若设置成 CV_WINDOW_AUTOSIZE 窗口大小会随着图像的载入而根据图像大小调整,用户没办法手动调整窗口大小设置成 0 ,随意调整cvDestoyWindow cvDestroyAllWindowsc...
阅读全文
摘要:cvAbs , cvAbsDiff , cvAbsDiffScvAdd , cvAddS , cvAddWeighted(可添加权重)#include #include int main(int argc,char** argv){ IplImage *s1,*s2; s1=cvLoad...
阅读全文
摘要:通过 cvResetImageRoI 函数释放ROI是非常重要的,否则其他操作将默认在ROI区域中进行通过巧妙的使用widthStep,可以达到同ROI一样的效果 —— 如果想设置和保持一副图像的多个子区域处于活动状态(ROI 只能串行处理并且必须不断的设置和重置)#include #include...
阅读全文
摘要:多通道的矩阵 —— 通道是连续的!!要将指向该数据类型的指针移动到下一通道,我们只需要将其增加1。如果想访问下一个“像素”或者元素集,则需要一定的偏移量矩阵的step元素是矩阵中行的长度,单位为字节。#include "cv.h"#include "highgui.h"#include int ma...
阅读全文
摘要:打开视频文件,对每一帧进行极坐标变换,然后将转换生成的图像序列写入视频文件中#include "cv.h"#include "highgui.h"int main(int argc,char** argv){ CvCapture* capture=0; capture = cvCreat...
阅读全文
摘要:创建滚动条,实现滚动条随视频播放移动。#include "cv.h"#include "highgui.h"CvCapture* capture=NULL;int g_slider_position=0; // 创建时滑块的位置int s_pos=0;void onTrackbarSlide(...
阅读全文
摘要:1,枚举类型 —— 下标自0开始enum 枚举类型名 { 常数表 }2,C++ 的异常处理机制实际上是一种运行时通知机制3,delete p;只是删除指针p指向内存区,并不是删除指针p,所以p还是可以用的。删除空指针所指向内存是可以的。4,为了避免内存泄露,在删除一个指针后应该将其其值赋为0。5,常...
阅读全文
摘要:1,如果遇到派生类成员和基类成员的名称冲突的情况,程序会采用派生类成员执行相应的操作。如果需要使用基类中的同名成员,则必须在程序中使用全局分辨符“::”虚基类 —— 派生类在继承基类时加入“virtual”关键字,应用中将只存在一个基类的拷贝;如果同意继承层次中既有虚基类又有非虚基类,那么程序执行时...
阅读全文
摘要:1,在C语言中,全局变量必须声明在所有的函数之前,局部变量必须声明在所有可执行语句之前; C++ 允许在代码块的任何位置对局部变量进行声明2,常量定义方面,C语言 #define 可能因计算的优先级出现问题,C++ const:不允许在程序的任何位置改变const修饰符声明的常量,常量的名称一般用大...
阅读全文

浙公网安备 33010602011771号