OpenCV
太平洋上的冰山
久已不翻的日记,留下长长的空白,遥远的记忆,汇进无声的墨香,曾以为,留念是不必的,而今方知,留念是一方深邃的海。
展开
-
FAST特征点检测
原文地址:http://www.cnblogs.com/ronny/p/4078710.htmlFeatures From Accelerated Segment Test1. Fast算法原理博客中已经介绍了很多图像特征检测算子,我们可以用LoG或者DoG检测图像中的Blobs(斑点检测),可以根据图像局部的自相关函数来求得Harris角点(Harris角转载 2015-01-20 22:04:28 · 993 阅读 · 0 评论 -
【OpenCV】SIFT原理与源码分析
原文出自:http://blog.csdn.net/xiaowei_cqu/article/details/8069548SIFT简介Scale Invariant Feature Transform,尺度不变特征变换匹配算法,是由David G. Lowe在1999年(《Object Recognition from Local Scale-Invariant Feature转载 2015-01-16 22:53:13 · 869 阅读 · 0 评论 -
OpenCV2.4.4中调用SIFT特征检测器进行图像匹配
OpenCV中一些相关结构说明:特征点类:查看文本打印?class KeyPoint { Point2f pt; //坐标 float size; //特征点邻域直径 float angle; //特征点的方向,值为[0,360),负值表示不使用 float转载 2015-01-16 22:51:06 · 871 阅读 · 0 评论 -
OpenCV仿射变换+投射变换+单应性矩阵
estimateRigidTransform():计算多个二维点对或者图像之间的最优仿射变换矩阵 (2行x3列),H可以是部分自由度,比如各向一致的切变。getAffineTransform():计算3个二维点对之间的仿射变换矩阵H(2行x3列),自由度为6.warpAffine():对输入图像进行仿射变换findHomography: 计算多个二维点对之间的最优单映射变换矩阵 H(3行x3列)转载 2015-01-15 22:59:02 · 1324 阅读 · 0 评论 -
Opencv2.4.9源码分析——MSER
最大稳定极值区域(MSER-Maximally Stable Extremal Regions)可以用于图像的斑点区域检测。该算法最早是由Matas等人于2002年提出,它是基于分水岭的概念。MSER的基本原理是对一幅灰度图像(灰度值为0~255)取阈值进行二值化处理,阈值从0到255依次递增。阈值的递增类似于分水岭算法中的水面的上升,随着水面的上升,有一些较矮的丘陵会被淹没,如果从天空往转载 2015-01-16 23:16:57 · 1541 阅读 · 0 评论 -
OpenCV_局部图像特征的提取与匹配_源代码
OpenCV的feature2d module中提供了从局部图像特征(Local image feature)的检测、特征向量(feature vector)的提取,到特征匹配的实现。其中的局部图像特征包括了常用的几种局部图像特征检测与描述算子,如FAST、SURF、SIFT、以及ORB。对于高维特征向量之间的匹配,OpenCV主要有两种方式:1)BruteForce穷举法;2)FLANN近似K近转载 2015-01-16 22:54:42 · 852 阅读 · 1 评论 -
【OpenCV】SIFT原理与源码
SIFT简介Scale Invariant Feature Transform,尺度不变特征变换匹配算法,是由David G. Lowe在1999年(《Object Recognition from Local Scale-Invariant Features》)提出的高效区域检测算法,在2004年(《Distinctive Image Features from Scale-Inva转载 2015-01-16 22:47:40 · 954 阅读 · 0 评论 -
stitching_detail算法介绍
一、stitching_detail程序运行流程 1.命令行调用程序,输入源图像以及程序的参数 2.特征点检测,判断是使用surf还是orb,默认是surf。 3.对图像的特征点进行匹配,使用最近邻和次近邻方法,将两个最优的匹配的置信度保存下来。 4.对图像进行排序以及将置信度高的图像保存到同一个集合中,删除置信度比较低的图像转载 2015-01-15 22:57:22 · 2922 阅读 · 4 评论 -
IplImage, CvMat, Mat 的关系(条理清晰)
IplImage, CvMat, Mat 的关系opencv中常见的与图像操作有关的数据容器有Mat,cvMat和IplImage,这三种类型都可以代表和显示图像,但是,Mat类型侧重于计算,数学性较高,openCV对Mat类型的计算也进行了优化。而CvMat和IplImage类型更侧重于“图像”,opencv对其中的图像操作(缩放、单通道提取、图像阈值操作等)进行了优化。在opencv2转载 2014-12-20 16:42:57 · 575 阅读 · 0 评论 -
OpenCV2:Mat属性type,depth,step
原文转自:http://www.cnblogs.com/wangguchangqing/p/4016179.html在OpenCV2中Mat类无疑使占据着核心地位的,前段时间初学OpenCV2时对Mat类有了个初步的了解,见OpenCV2:Mat初学。这几天试着用OpenCV2实现了图像缩小的两种算法:基于等间隔采样和基于局部均值的图像缩小,发现对Mat中的数据布局和一些属性的认知还是转载 2015-01-26 16:02:02 · 1164 阅读 · 1 评论 -
OpenCV中的混合高斯算法原理
申明:以下内容为笔者翻译自国际会议论文,鉴于本人水平有限,翻译难免有误,请大家多多包容。原文为:An Improved Adaptive Background Mixture Model for Real-time Tracking with Shadow Detection; P.KaewTraKualPong,R.Bowden; In Proc. 2nd European W转载 2014-11-14 21:09:51 · 939 阅读 · 0 评论 -
OpenCV学习笔记(四十一)——再看基础数据结构core
记得我在OpenCV学习笔记(四)——新版本的数据结构core里面讲过新版本的数据结构了,可是我再看这部分的时候,我发现我当时实在是看得太马虎了。对于新版本的数据结构,我再说说。Point_类不用多言,里面两个成员变量x,y。Point_就是Point2i,也是Point,Point_就是Point2f,Point_就是Point2d。Point3_类不太常用,跟Point_类差不转载 2014-07-28 00:16:16 · 618 阅读 · 0 评论 -
关于sba(sparse bundle adjustment)的30个常见问题
sba FAQQ1 -- 什么是sba?sba是一个C/C++软件包对广义稀疏光束平差,在GNU公共许可证下分发。sba是通用的,提供关于定义涉及光束法平差的图像投影的参数选择和函数关系增强的灵活性。Q2 -- 什么是光束法平差?假设给定一系列图像中观测到的一组对应点集相应的三维坐标的初始估计,以及关于每张图像的viewing参数的初始估计。光束法平转载 2014-07-23 10:53:14 · 1991 阅读 · 0 评论 -
OpenCV: OpenCV中IplImage图像格式
OpenCV中IplImage图像格式与BYTE图像数据的转换IplImage* iplImage;BYTE* data;1 由IplImage*得到BYTE*图像数据:data = iplImage->imageDataOrigin; //未对齐的原始图像数据或者data = iplImage->imageData; //已对齐的图像数据2 由BYTE*得到IplIm转载 2014-06-10 20:42:50 · 615 阅读 · 0 评论 -
学习OpenCV之CV篇
cv篇包含以下几个部分:图像处理结构分析运动分析与对象跟踪模式识别相机标定和三维重建 1、图像处理图像处理主要针对二维像素数组,但是我们称这些数组为“图像”,但是它们不一定非得是IplImage 结构,也可以是CvMat或者CvMatND结构。梯度、边缘和角点Sobel使用扩展 Sobel转载 2014-07-20 16:40:36 · 5177 阅读 · 0 评论 -
【OpenCV】特征检测器 FeatureDetector
OpenCV提供FeatureDetector实现特征检测及匹配[cpp] view plaincopyclass CV_EXPORTS FeatureDetector { public: virtual ~FeatureDetector(); void detect( const Mat& image转载 2015-01-16 22:56:49 · 2530 阅读 · 0 评论 -
OpenCv ORB例子代码
#include "opencv2/objdetect/objdetect.hpp" #include "opencv2/features2d/features2d.hpp" #include "opencv2/highgui/highgui.hpp" #include "opencv2/calib3d/calib3d.hpp" #include "opencv2/imgp转载 2015-01-16 22:58:43 · 1422 阅读 · 0 评论 -
OpenCV中特征点提取和匹配的通用方法
OpenCV在新版本中把很多C语言的代码都重新整理成了C++代码,让我们在使用的时候更加方便灵活。其中对于特征点的提取和匹配,充分体现了C++的强大。下面直接用例子来说明。假设我们有两幅图:1.bmp和2.bmp,要从中提取体征点并匹配,代码如下: // Load image from fileIplImage *pLeftImage = cvLoadImage("1.bm转载 2015-01-16 23:00:47 · 781 阅读 · 0 评论 -
OpenCV参考手册之Mat类详解(二)
原文转自:http://blog.csdn.net/giantchen547792075/article/details/7169255Mat::~MatMat的析构函数。C++: Mat::~Mat()析构函数调用Mat::release()。Mat::operator =提供矩阵赋值操作。C++: Mat& Mat::operat转载 2015-04-10 11:15:22 · 551 阅读 · 0 评论 -
OpenCV矩阵运算
原文转自:http://blog.sina.com.cn/s/blog_afe2af380101bqhz.html一、矩阵Mat I,img,I1,I2,dst,A,B;double k,alpha;Scalar s;1.加法I=I1+I2;//等同add(I1,I2,I);add(I1,I2,dst,mask,dtype);scaleAdd(I1,scale,I2转载 2015-03-31 19:32:07 · 942 阅读 · 0 评论 -
OpenCV——Delaunay三角剖分 [转载]
本文转自:http://blog.csdn.net/berguiliu/article/details/25003055Delaunay三角剖分是1934年发明的将空间点连接为三角形,使得所有三角形中最小角最大的一个技术。如果你熟悉计算机图形学,你便会知道Delaunay三角剖分是变现三维形状的基础。如果我们在三维空间渲染一个,我们可以通过这个物体的投影来建立二维视觉图,并用二转载 2015-03-14 17:08:39 · 969 阅读 · 0 评论 -
stitching_detail算法介绍
原文转自:http://www.geekcome.com/content-10-8390-1.html一、stitching_detail程序运行流程 1.命令行调用程序,输入源图像以及程序的参数 2.特征点检测,判断是使用surf还是orb,默认是surf。 3.对图像的特征点进行匹配,使用最近邻和次近邻方法,将两个最优的匹配的置转载 2015-03-06 19:36:06 · 1585 阅读 · 1 评论 -
学习OpenCV范例(二十一)——Keypoints+Knn+findHomography进行目标定位
点击打开链接本范例的代码主要都是 学习OpenCV——通过KeyPoints进行目标定位这篇博客提供的,然后在它的基础上稍加修改,检测keypoints点的检测器是SURF,获取描述子也是用到SURF来描述,而用到的匹配器是FlannBased,匹配的方式是Knn方式,最后通过findHomography寻找单映射矩阵,perspectiveTransform获得最终的目标,在这个转载 2015-03-19 21:23:49 · 2251 阅读 · 0 评论 -
RANSAC与最小二乘算法的应用
原文转自:http://blog.csdn.net/viewcode/article/details/7828178RANSAC的原理介绍有:http://en.wikipedia.org/wiki/Ransac最小二乘法least squares的原理介绍有: http://en.wikipedia.org/wiki/Least_squares两者的共同点都是要首先确转载 2015-03-19 21:49:09 · 1592 阅读 · 0 评论 -
OpenCV矩阵运算
原文转自:http://blog.sina.com.cn/s/blog_afe2af380101bqhz.html一、矩阵Mat I,img,I1,I2,dst,A,B;double k,alpha;Scalar s;1.加法I=I1+I2;//等同add(I1,I2,I);add(I1,I2,dst,mask,dtype);scaleAdd(I1,scale,I2转载 2015-03-04 15:08:32 · 653 阅读 · 0 评论 -
OpenCV捕获视频
原文转自:http://www.nmtree.net/2014/03/27/opencv-capture-video.html 本文讲一下如何捕获视频。从文件中捕获视频其实使用OpenCV读取视频相当简单,只需要初始化一个VideoCapture对象,打开视频文件,逐帧读取。程序下面是简单的OpenCV代码:1234567转载 2015-03-02 19:48:06 · 923 阅读 · 0 评论 -
OpenCV中findFundamentalMat函数使用的模型
本文转自:http://wiki.opencv.org.cn/index.php/Cv%E7%85%A7%E7%9B%B8%E6%9C%BA%E5%AE%9A%E6%A0%87%E5%92%8C%E4%B8%89%E7%BB%B4%E9%87%8D%E5%BB%BA针孔相机模型和变形这一节里的函数都使用针孔摄像机模型,这就是说,一幅视图是通过透视变换将三维空间中的点投影到图像平转载 2015-02-14 17:12:25 · 15974 阅读 · 1 评论 -
学习OpenCV范例(二十)——角点检测算法
原文地址:http://blog.csdn.net/chenjiazhou12/article/details/22683049本次范例讲的都是检测角点的算法,在这里我们会讲到,harris角点检测,Shi-Tomasi角点检测,FAST角点检测,尺度不变surf检测,尺度不变sift检测,特征点的描述。由于是算法问题,相对来说会比较复杂,而且都是一些比较经典的算法,如果只是纯粹的想要转载 2015-01-21 21:20:48 · 1313 阅读 · 0 评论 -
OpenCV学习笔记(五十)——Algorithm类介绍(core)
刚开始学习新的2.4.0,大概看了一遍使用手册,还是有些失望的,很多章节还是2.3.1的内容,文档上的代码也是漏洞很多。这里就简单介绍一下Algorithm这个新的基类。本来以为这部分是一个新模块的,看了referenceManual后才知道它只是一个基类,集成了一些相对复杂的算法,比如BM算法等立体匹配算法,前景背景分离的算法,光流法等模块都集成在其中。类内成员函数主要有get、set、writ转载 2015-01-20 22:06:47 · 1880 阅读 · 0 评论 -
无法启动此程序 因为计算机中丢失opencv_core243d.dll-我的解决方案
我用的是VS2010,opencv2.4.3,运行就终止说:无法启动此程序 因为计算机中丢失opencv_core243d.dll。(环境变量都已经配置好了,还有项目的各种包的导入工作都已经完成) 经查找验证,得出以下方法: 1.是由于opencv_core243d.dll所在目录(一般为D:\opencv\build\x64\v转载 2015-01-20 15:25:57 · 6613 阅读 · 0 评论 -
OpenCV学习笔记(四十六)——FAST特征点检测features2D
特征点检测和匹配是计算机视觉中一个很有用的技术。在物体检测,视觉跟踪,三维常年关键等领域都有很广泛的应用。这一次先介绍特征点检测的一种方法——FAST(features from accelerated segment test)。很多传统的算法都很耗时,而且特征点检测算法只是很多复杂图像处理里中的第一步,得不偿失。FAST特征点检测是公认的比较快速的特征点检测方法,只利用周围像素比较的信息就可以转载 2015-01-16 23:20:48 · 1020 阅读 · 0 评论 -
使用cv::findFundamentalMat要注意的几点
使用cv::findFundamentalMat要注意的几点 在新版的OpenCV中,很多C代码都被重新封装成了C++代码,相应的其调用接口也发生了改变,而文档中的叙述也越来越不清楚,往往导致使用过程中出现各种问题。 在处理立体图像对的时候经常会用到对极几何的知识,计算基础矩阵也是很常见的事。OpenCV实现了基本矩阵的算法。对于老版本的C代码,计算基本矩转载 2014-04-18 21:37:53 · 5709 阅读 · 0 评论 -
OpenCV中的Resize和Reshape
OpenCV中的Resize和Reshape都是改变一个矩阵的形状,那它们有哪些不同点呢?1. Mat::reshape( ) 只是在逻辑上改变矩阵的行列数或者通道数,没有任何的数据的复制,也不会增减任何数据,因此这是一个O(1)的操作,它要求矩阵是连续的。C++: Mat Mat::reshape(int cn, int rows=0 const)cn:目标通转载 2014-07-20 10:25:58 · 918 阅读 · 0 评论 -
【OpenCV】访问Mat图像中每个像素的值
今天百度搜资料还搜到了自己的。。。《访问图像中每个像素的值》,这是之前写的了,用的也是2.0的风格IplImage*格式,不太适用后来Mat的格式,特此重写一篇。以下例子源自《The OpenCV Tutorials --Release 2.4.2》2.2 How to scan images, lookup tables and time measurement with OpenCV转载 2014-05-26 09:54:55 · 647 阅读 · 0 评论 -
bmp文件转yuv420文件
/* bmp文件转yuv420文件程序 vc2010 + opencv 2.4.4 研究hevc时现有图像为bmp格式,HM中需要yuv420格式,网上没找到合适转换工具,就简单写了份转换代码 zhuyh 2013-06-08 */ #include opencv2/opencv.hpp> #incl转载 2014-05-25 19:32:08 · 2249 阅读 · 0 评论 -
学习OpenCV——通过KeyPoints进行目标定位
目前的AR应用基本都是基于marker的比较多,但是不依靠marker首先要完成的定位工作。这篇文章主要描述,使用特征点进行检测和定位的问题(其中包含一些matching优化方式,具体请参考:学习OpenCV——KeyPoint Matching 优化方式)。 步骤: 1. 目标图特征点检测和描述子计算; 2. 打开camera采集图像,并计算特征点及描述子; 3. 进行特征点匹配转载 2014-03-25 10:26:42 · 4276 阅读 · 0 评论 -
OpenCV笔记(cv::Mat)
复制:如果定义为uchar *p=new uchar[9];Mat a(3,3,CV_8UC1,p);那样a矩阵的数据区还是指向p的,如果delete了p数组,a的指针就无效了。矩阵之间的复制问题Mat b=a;这个是浅复制,即a.release()之后b就无效了。Mat b; a.copyTo(b);或者转载 2014-04-18 14:59:05 · 988 阅读 · 0 评论 -
【OpenCV】图像几何变换:旋转,缩放,斜切
几何变换几何变换可以看成图像中物体(或像素)空间位置改变,或者说是像素的移动。几何运算需要空间变换和灰度级差值两个步骤的算法,像素通过变换映射到新的坐标位置,新的位置可能是在几个像素之间,即不一定为整数坐标。这时就需要灰度级差值将映射的新坐标匹配到输出像素之间。最简单的插值方法是最近邻插值,就是令输出像素的灰度值等于映射最近的位置像素,该方法可能会产生锯齿。这种方法也叫零阶插值转载 2014-03-20 22:53:39 · 788 阅读 · 0 评论 -
cvtColor和cvCvtColor区别
★C++接口: void cvtColor(InputArray src, OutputArray dst, int code, int dstCn=0 )//InputArray:接口类可以是Mat、Mat_、Mat_、vector、vector>、vector★C接口:void cvCvtColor(const CvArr* src, CvArr* dst, i转载 2014-03-23 10:07:08 · 3320 阅读 · 0 评论 -
OpenCV特征匹配相关结构(KeyPoint&DMatch)
1. 特征点类:class KeyPoint{ Point2f pt; //坐标float size; //特征点邻域直径float angle; //特征点的方向,值为[0,360),负值表示不使用float response;int octave; //特征点所在的图像金字塔的组int class_id; //用于聚类的id}2. 存放匹配结果的结构:转载 2014-03-23 15:06:55 · 5091 阅读 · 0 评论