opencv学习笔记
文章平均质量分 91
小鬼柯南
这个作者很懒,什么都没留下…
展开
-
立体视觉
转载自:http://blog.csdn.net/tanmengwen/article/details/7408833双目测距与三维重建的OpenCV实现问题集锦(一)图像获取与单目定标双目测距与三维重建的OpenCV实现问题集锦(二)双目定标与双目校正 双目测距与三维重建的OpenCV实现问题集锦(三)立体匹配与视差计算转载 2017-03-30 11:10:29 · 929 阅读 · 0 评论 -
YUV格式转换为RGB(基于opencv)
之前写代码过程中需要将YUV格式视频中每帧提取出来,然后保存为图片。网上普遍有两种方法,第一种是通过opencv自带cvCvtColor,但是这种方法有bug,得到的图片会泛白。第二种方法是公式法。法一:opencv自带cvCvtColor说明:这种方法会出现图片“泛白”,具体原因网上是说cvCvtColor这个函数左右协议不同,不太懂。代码: [c转载 2017-02-23 20:32:27 · 2746 阅读 · 0 评论 -
Opencv2系列学习笔记12(检测fast特征)
一:Fast特征定义什么是角点:这次的定义基于假定特征点周围的图像强度,通过检查候选像素周围一圈像素来决定是否接受一个特征点。与中心点差异较大的像素如果组成连续的圆弧,并且弧长大于原周长的3/4,那么我们认为找到了一个特征点。二:加速技巧 首先测试圆上被90度分割的四个点(顶部,底部,左侧及右侧),那么为了满足上述条件,四个点中至少三个点必须大于或者小于中心像素。如果不转载 2017-02-23 20:29:28 · 324 阅读 · 0 评论 -
Sift特征
sift = scale invariant feature transform—— 尺度不变特征变换,具有尺度,旋转,仿射,视角,光照不变性。。关于sift的特征介绍,已经有很多的blog对其进行简介了,见参考的blog。我也没有将2004年那篇原文精细看完,这里只是提供在opencv中如何实现 sift关键点的检测。Code:[cpp] view p转载 2017-02-23 20:26:01 · 349 阅读 · 0 评论 -
图像放大与缩小—插值
Opencv中对于图像的放大与缩小主要有两种类型,一种是图像金字塔pyrUp和pyrDown函数,另外一种是更通用的resize函数允许你指定目标图像的尺寸。一:图像金字塔对于函数pyrDown和pyrUp在没有指定缩放的大小时,默认大小为源图像的一半或2倍。PyrDown的原理是先将图像进行高斯平滑,然后去除偶数行。PyrUp的原理是图像新插入的偶数行全部为0,然转载 2017-02-23 20:23:59 · 873 阅读 · 0 评论 -
VS配置Opencv原理
Vs2010配置opencv的步骤可以我的这篇blog:http://blog.csdn.net/lu597203933/article/details/11175811. 配置主要包括4点配置:环境变量的配置;vc++目录中包含目录和库目录的配置;链接器输入的配置。在介绍这四点配置前,我首先想简单介绍下.lib文件和.dll文件:一:.lib文件和.dll文件(1)li转载 2017-02-23 20:22:20 · 217 阅读 · 0 评论 -
Opencv2系列学习笔记11(霍尔夫变换)
本节主要介绍如何用Hough变换检测直线和圆一:Hough变换检测直线 原始Hough变换思想:先求出图像中每点的极坐标方程如下图>,相交于一点的极坐标曲线的个数大于最小投票数,则将该点所对应的(p, r0)放入vector中,即得到一条直线,lines中存储的是极坐标方程的参数注意hough变换要求输入的是包含一组点的二值图像。代码:转载 2017-02-23 20:20:25 · 456 阅读 · 0 评论 -
Opencv2系列学习笔记10(提取连通区域轮廓)
连通区域指的是二值图像中相连像素组成的形状。而内、外轮廓的概念及opencv1中如何提取二值图像的轮廓见我的这篇博客:http://blog.csdn.net/lu597203933/article/details/14489225 轮廓的简单提取算法如下: 系统性地扫描图像直到遇到连通区域的一个点,以它为起始点,跟踪它的轮廓,标记边界上的像素。当轮廓完整闭合,扫描回到转载 2017-02-23 20:18:37 · 1383 阅读 · 0 评论 -
Opencv2系列学习笔记9(使用Canny算子检测轮廓)
前面我们用sobel算子和拉普拉斯变换也可以进行边缘检测,见我的上一篇blog:http://blog.csdn.net/lu597203933/article/details/17252285但这样得到的二值边缘图像有两大缺点。第一:检测到的边缘过粗,这意味着难以实现物体的精确定位。第二:难以找到这样的阀值,即能足够低检测到所有重要的边缘,同时也不至于包含过多次要的边缘。转载 2017-02-23 20:16:40 · 905 阅读 · 0 评论 -
Opencv2系列学习笔记8(图像滤波)
一:概念:滤波是信号处理机图像处理中的一个基本操作。滤波去除图像中的噪声,提取感兴趣的特征,允许图像重采样。图像中的频域和空域:空间域指用图像的灰度值来描述一幅图像;而频域指用图像灰度值的变化来描述一幅图像。而低通滤波器和高通滤波器的概念就是在频域中产生的。低通滤波器指去除图像中的高频成分,而高通滤波器指去除图像中的低频成分。后面将介绍低通滤波器—均值和高斯滤波器;转载 2017-02-23 20:14:43 · 366 阅读 · 0 评论 -
LBP简介
LBP(local binary pattern)是一种用来描述图像局部纹理特征的算子。原始的LBP于1994年提出,它反映内容是每个像素与周围像素的关系。后被不断的改进和优化,分别提出了LBP旋转不变模式、LBP均匀模式等。一:原始的LBP 给出一个简单的案例计算LBP:如下图,周围8个像素点比中间点像素值大(或者相等)的记为1,小的记为0,这样就得到二值图,然后按顺时针方向转载 2017-02-23 20:11:57 · 519 阅读 · 0 评论 -
CvMat、Mat、IplImage之间的转换详解及实例
OpenCV学习之CvMat的用法详解及实例 CvMat是OpenCV比较基础的函数。初学者应该掌握并熟练应用。但是我认为计算机专业学习的方法是,不断的总结并且提炼,同时还要做大量的实践,如编码,才能记忆深刻,体会深刻,从而引导自己想更高层次迈进。1.初始化矩阵: 方式一、逐点赋值式: CvMat* mat = cvCreateMat( 2, 2, CV_64转载 2017-02-23 20:34:15 · 625 阅读 · 0 评论 -
图像形态学操作—腐蚀膨胀深入
这里我们主要想讲解冈萨雷斯的数字图像处理这本书上膨胀腐蚀的定义及用opencv实现的结果,然后对比它们之间的差异。一:opencv实现 在这之前可以看我的另外一篇blog:http://blog.csdn.net/lu597203933/article/details/17184439膨胀:案例代码:[cpp] view pl转载 2017-02-23 20:36:19 · 523 阅读 · 0 评论 -
POSIT:3D姿态估计
转载自:http://www.myexception.cn/operating-system/1918104.htmlPOSIT算法的原理--opencv 3D姿态估计3D姿态估计-POSIT算法POSIT算法,Pose fromOrthography and Scaling with Iterations, 比例正交投影迭代变换算法:用于估计物体的3D姿态(相对于镜头的平移和旋转转载 2017-03-29 21:57:37 · 1785 阅读 · 0 评论 -
opencv 摄像机标定
摄像机的标定问题是机器视觉领域的入门问题,可以分为传统的摄像机定标方法和摄像机自定标方法。定标的方法有很多中常见的有:Tsai(传统)和张正友(介于传统和自定标)等,摄像机成像模型和四个坐标系(通用原理)。摄像机模型采用经典的小孔模型,如图中Oc(光心),像面π表示的是视野平面,其到光心的距离为f(镜头焦距)。四个坐标系分别为:世界坐标系(Ow),摄像机坐标系(Oc),图像原创 2017-03-29 15:14:31 · 539 阅读 · 0 评论 -
卡尔曼滤波(Kalman Filter) 的进一步讨论
我们在上一篇文章中通过一个简单的例子算是入门卡尔曼滤波了,本文将以此为基础讨论一些技术细节。卡尔曼滤波(Kalman Filter)http://blog.csdn.net/baimafujinji/article/details/50646814在上一篇文章中,我们已经对HMM和卡尔曼滤波的关联性进行了初步的讨论。参考文献【3】中将二者之间的关转载 2017-03-12 17:00:01 · 471 阅读 · 0 评论 -
卡尔曼滤波(Kalman Filter)
一、引言下面我们引用文献【1】中的一段话作为本文的开始:想象你在黄昏时分看着一只小鸟飞行穿过浓密的丛林,你只能隐隐约约、断断续续地瞥见小鸟运动的闪现。你试图努力地猜测小鸟在哪里以及下一时刻它会出现在哪里,才不至于失去它的行踪。或者再想象你是二战中的一名雷达操作员,正在跟踪一个微弱的游移目标,这个目标每隔10秒钟在屏幕上闪烁一次。或者回到更远的从前,想象你原创 2017-03-12 16:57:40 · 533 阅读 · 0 评论 -
opencv学习大纲
opencv各章学习的内容概括与汇总OpenCv中文论坛精华地址http://www.opencv.org.cn/index.php/User:Ollydbg23http://sivp.sourceforge.net/(sivp)一、基础操作1. 数据类型 数据结构了解 图像相关:cvArr cvMat IplImage 数据数组原创 2017-03-12 09:53:16 · 834 阅读 · 0 评论 -
背景学习模型 —》codebook算法
《Learning OpenCV》一书当中介绍的第二种背景建模方法是codebook。直接通过书本来理解codebook算法有点困难,可以按照下面的顺序来理解codebook算法,首先看看百度百科上对这个算法的基本原理的阐述,我认为百度百科上的描述已经比较直观,但当中有很多细节的东西还需要看具体的代码,所以可以通过细读下面转载的代码来理解codebook算法,理解代码的过程需要有点耐心,先看mai原创 2017-03-03 19:49:22 · 5464 阅读 · 0 评论 -
0pencv 分类器 haartraining生成.xml文件过程
1.准备正负样本: 在上一讲http://www.cnblogs.com/tornadomeet/archive/2012/03/27/2420088.html 中,我们已经收集到了训练所用的正样本。下面就开始收集负样本了,负样本要求是:不能包含人脸,且图片大小也不需要归一化到正样本尺寸,只需比正样本尺寸大或者相等即可。建议负样本用灰度图,加快训练速度,且负样本一定不能重复,要增大转载 2017-02-26 14:39:17 · 527 阅读 · 0 评论 -
opencv学习_16(CvMat矩阵结构以及矩阵数据访问)
通道和维度+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++首先说一下对矩阵维度和通道的理解: 维:体现为坐标。 通道: 对于这样一个数组矩阵:float data[18] = { 30, 60, 40, 60, 5转载 2017-02-24 14:49:11 · 539 阅读 · 0 评论 -
图像质量的客观评估指标PSNR与SSIM
PSNRSSIM代码参考文献1:PSNRPSNR是最为常用的图像质量评估指标: 其中K为图像对应二进制位数,一般为8。MSE为均方误差,计算公式为: 2:SSIMSSIM[1]主要用来衡量图像结构完整性,是另一种比较常用的客观评估指标。实际应用中,一般用滑动窗口对图像进行分块,这里的滑动窗口一般为高斯窗口,并用高斯加权计算每个窗口的均值、方差和协转载 2017-02-23 20:40:45 · 2206 阅读 · 0 评论 -
OpenCV2.3.1在CentOS6.5下的安装
安装的linux版本是centos6.5,选择的是opencv2.3.1。不是很新的版本。因为在安装opencv2.4.9的时候,make的过程中出现了问题. 一:安装依赖包依赖包用yum安装就可以了,需要以下安装包:yum install cmake gcc gcc-c++ gtk+-devel gimp-devel gimp-devel-tools gimp-h转载 2017-02-23 20:38:40 · 411 阅读 · 0 评论 -
Opencv2系列学习笔记7(图像形态学运算)
形态学滤波理论于上世纪90年代提出,被用于分析及处理离散图像。它定义了一系列的运算,应用预定义的形状元素来变换一张图像。一:图像腐蚀、膨胀和开闭运算图像的腐蚀:替换为当前像素位像素集合中的最小像素值,函数为erode图像的膨胀:替换为当前像素位像素集合中的最大像素值,函数为dilate图像的开运算:先腐蚀后膨胀,函数为morphologyEx,对应的参数为MORPH转载 2017-02-23 20:09:25 · 266 阅读 · 0 评论 -
Opencv2系列学习笔记6(直方图的应用)
查找表均衡化compare转载 2017-02-23 20:06:01 · 565 阅读 · 0 评论 -
opencv学习_9 (轮廓提取)
轮廓提取——主要针对二值图像 轮廓分为外轮廓和内轮廓 如下图:外轮廓以c开头 内轮廓以h开头 opencv 提供了寻找轮廓的函数 inttotals = cvFindContours(img, storage,&contours,sizeof(CvContour), CV_RETR_LIST, CV_CHAIN_APPROX_NONE,cvPoint(0,0转载 2017-02-23 19:31:46 · 517 阅读 · 0 评论 -
opencv学习_8 ( 图像细化)
图像细化——针对的是二值图像 或者用阀值处理的二值图像(1):例子 左边为输入图像 右边为细化的效果图(2)思想:公式: y = p0*2^0 + p1*2^1+ p2*2^2 + p3*2^3 + p4*2^4 + p5*2^5 + p6*2^6 +p7*2^7 前辈们对此作出了总结,得出每个点周围8领域的256种情况,放在一转载 2017-02-23 19:29:56 · 952 阅读 · 0 评论 -
opencv学习_7 (颜色空间)
这次我主要说说颜色空间,包括三个方面:RGB颜色空间,HSV颜色空间以及颜色空间的转换RGB颜色空间介绍:1:RGB颜色空间简介 三基色原理:大多数的颜色可以通过红、绿、蓝三色按照不同的比例合成产生,同样绝大多数单色光也可以分解成红绿蓝三种色光 红绿蓝三基色按照不同的比例相加合成混色称为相加混色。其中一些混色的规律有:转载 2017-02-23 19:26:54 · 264 阅读 · 0 评论 -
opencv学习_6 (灰度直方图)
灰度直方图这次我从最基本的直方图讲起,一维直方图,至于二维等高维直方图,仅作为了解,后面有时间另开blog详解。1:首先我们给出一幅图其中的数据假设对应一副灰度图片的灰度值,则直方图的作用就是画出在bin范围内取值的个数,如图左边的直方图---相当于我们word中的柱状图。2:在opencv中直方图的结构为:typedef struct转载 2017-02-23 19:24:36 · 313 阅读 · 0 评论 -
opencv学习_5 (IplImage的结构)
IplImage结构体为:[cpp] view plain copy print?typedef struct _IplImage { int nSize; /* IplImage大小 */ int ID; /* 版本 (=0)*/转载 2017-02-23 19:22:43 · 191 阅读 · 0 评论 -
opencv学习_4(opencv基础数据结构 CvPoint & CvSize & CvRect & CvScalar & CvArr & CvMat)
1:包含在cxcore/include/cxtypes.h头文件中。2:CvPoint系列 -----(x,y) CvPoint:表示图像中的点 CvPoint2D32f:二维空间中的点 CvPoint3D32f:三维空间中的点3:CvSize系列-----宽度和高度转载 2017-02-23 19:20:58 · 1310 阅读 · 0 评论 -
Opencv学习_3 (Opencv读取视频 &视频进度控制 &写视频)
opencv读取视频: 使用opencv读取视频主要用到这几个函数:cvCreateFileCapture cvQueryFrame (或cvGrabFrame cvRetrieveFrame) cvReleaseCapture。1:简单介绍:CvCapture是一个结构体,用来保存图像捕获所需要的信息,opencv提供了两种方式从外部捕获图像转载 2017-02-23 19:19:34 · 1069 阅读 · 0 评论 -
Opencv学习_2 (opencv结构&显示图像)
opencv结构:1:主要包含: cxcore cv machine learning highgui cvcam cvaux2:cxcore: 基础结构:CvPoint,CvSize, CvScalar等 数组结构:cvCreateImage,cvCreateMat等转载 2017-02-23 19:18:07 · 287 阅读 · 0 评论 -
laplace变换 ----边缘检测
Laplace计算图像的 Laplacian 变换void cvLaplace( const CvArr* src, CvArr* dst, intaperture_size=3 );src输入图像.dst输出图像.aperture_size核大小 (与 cvSobel 中定义一样).函数 cvLaplace 计算输入图像的转载 2017-02-23 19:12:02 · 447 阅读 · 0 评论 -
opencv中图像的通道、深度的解释
关于通道的解释: 1、比较通俗易懂的解释是:灰度图的通道数为1,彩色图的通道为3。基本上,描述一个像素点,如果是灰度,那么只需要一个数值来描述它,就是单通道。如果一个像素点,有RGB三种颜色来描述它,就是三通道。 2、4通道通常为RGBA,在某些处理中可能会用到。2通道图像不常见,通常在程序处理中会用到,如傅里叶变换,可能会用到,一个通道为实数,一个通道为虚数,主要是编程方便转载 2017-02-23 19:10:37 · 614 阅读 · 0 评论 -
opencv学习_10 (图像和轮廓的匹配(hu矩))
图像和轮廓的匹配(hu矩) (1)hu矩的概念,我也总结了但是我不过多的阐述,因为我也不是太理解,只知道它具有平移,旋转,尺度不变性,详细见别人的这篇blog:http://blog.csdn.net/wrj19860202/article/details/6327094(2)opencv 的实现——计算hu矩普通矩和中心矩的计算 Void cvMom转载 2017-02-23 19:34:19 · 1138 阅读 · 0 评论 -
opencv学习_11 (模板匹配(包括单模板和多模板))
模板匹配——在一幅图像中匹配与模板相似的单个或者多个目标(1)目标匹配函数:cvMatchTemplate( const CvArr* image, constCvArr* templ, CvArr* result,int method );Image 待搜索图像Templ 模板图像转载 2017-02-23 19:36:38 · 4111 阅读 · 4 评论 -
Opencv2系列学习笔记5(检测Harris角点)
在计算机视觉中,兴趣点(也叫关键点或者特征点)的概念被大量用于解决物体识别、图像匹配、视觉跟踪、三维重建等问题。它依赖于这个想法,即不再观察整副图像,而是选择某些特殊的点,然后对它们执行局部分析。如果能检测到足够多的这种点,同时它们的区分度很高,并且可以精确定位稳定的特征,那么这个方法就很有效。Harris角点的理论部分见opencv1的这篇blog:http://blog.csdn.ne转载 2017-02-23 20:00:14 · 978 阅读 · 0 评论 -
Opencv2系列学习笔记4(灰度直方图)
和之前的一篇blog【http://blog.csdn.net/lu597203933/article/details/14104505】一样,这篇是opencv2的Mat格式。一:一维直方图Code:[cpp] view plain copy print?int main() { Mat imag转载 2017-02-23 19:58:05 · 348 阅读 · 0 评论 -
Opencv2系列学习笔记2_2(图像的其它操作)
本节主要涉及到图像的领域、算术操作以及如何操作图像感兴趣的区域,并讲解IplImage和Mat及opencv2中Ptr类型之间的相互转换。一:邻域操作以下例子主要对图像进行锐化。基于拉普拉斯算子。这幅图像的边缘部分将得到放大,细节部分将更加的锐利。计算方式为:sharpened_pixel = 5*current – left – right –up – down.转载 2017-02-23 19:55:44 · 490 阅读 · 0 评论