【OpenCV学习与实践】
文章平均质量分 91
结合有关图像处理、模式识别、媒体分析等方面的实践程序学习OpenCV
xiaowei_cqu
一只人畜无害的小码农
展开
-
【OpenCV】透视变换 Perspective Transformation(续)
透视变换的原理和矩阵求解请参见前一篇原创 2014-05-27 09:39:46 · 123192 阅读 · 31 评论 -
【OpenCV】高斯混合背景建模
OpenCV中实现了两个版本的高斯混合背景/前景分割方法(Gaussian Mixture-based Background/Foreground Segmentation Algorithm)[1-2],调用接口很明朗,效果也很好。BackgroundSubtractorMOG 使用示例int main(){ VideoCapture video("1.avi"); Mat ...原创 2014-04-14 17:40:45 · 65931 阅读 · 17 评论 -
【OpenCV】访问Mat中每个像素的值(新)
在《OpenCV 2 Computer Vision Application Programming Cookbook》看到的例子,非常不错,算是对之前的文章的回顾和补充。Color Reduce还是使用经典的Reduce Color的例子,即对图像中的像素表达进行量化。如常见的RGB24图像有256×256×256中颜色,通过Reduce Color将每个通道的像素减少8倍至256/8=32种,原创 2014-02-24 21:02:45 · 161201 阅读 · 28 评论 -
【OpenCV】使用floodfill()实现PhotoShop魔棒功能
在OpenCV中看到一个很有意思的函数:floodfill()使用给定颜色填充一个联通的区域C++: int floodFill(InputOutputArray image, Point seedPoint, Scalar newVal, Rect* rect=0, Scalar loDiff=Scalar(), Scalar upDiff=Scalar(), int flags=4 )一原创 2013-05-29 01:00:26 · 16110 阅读 · 2 评论 -
【OpenCV】绘制直方图
和这一篇《数字图像直方图》内容是一样的,只是使用Mat格式实现~绘制灰色直方图//绘制灰度直方图int main( ){ Mat src,gray; src=imread("baboon.jpg"); cvtColor(src,gray,CV_RGB2GRAY); int bins = 256; int hist_size[] = {bins}; float ra原创 2013-04-22 12:20:57 · 26195 阅读 · 8 评论 -
【OpenCV】视频标注工具
之前一直用师兄写的标注工具,很多操作感觉不太习惯。又没有源码可改,索性自己写了一个,功能比较简单。就是视频的读取和标注。主要用鼠标的点击进行标注,第一次点击为标注框左上角的点,可以按住左键调整标注框;松开时会确定标注框(框由蓝色变为绿色);一帧中可以标注多个视频。主要通过OpenCV的鼠标响应函数来实现:void setMouseCallback(const string&...原创 2013-04-12 13:00:26 · 14440 阅读 · 22 评论 -
【OpenCV】基元检测 Primitive Detection
基元的概念基元泛指图像中有特点的单元。常说的基元有:边缘、角点、斑点、直线段、圆、等基元检测是图像分析的基础 边缘(Edge)检测边缘是图像中像素灰度值发生剧烈变化而不连续的结果边缘是赋予单个像素的一种性质,与图像函数在该像素的一个邻域内的梯度特性相关边缘幅值:梯度的幅值边缘方向:梯度方向旋转-90度边缘检测既是常见基元检测的基础,也是基于边界的图像分割的第一...原创 2013-03-19 14:20:09 · 17582 阅读 · 3 评论 -
【OpenCV】特征检测器 FeatureDetector
OpenCV提供FeatureDetector实现特征检测及匹配class CV_EXPORTS FeatureDetector{public: virtual ~FeatureDetector(); void detect( const Mat& image, vector& keypoints, const Mat& mask=Mat() ) const; void de原创 2013-03-08 23:14:02 · 59065 阅读 · 19 评论 -
【OpenCV】SIFT原理与源码分析:关键点描述
《SIFT原理与源码分析》系列文章索引:http://blog.csdn.net/xiaowei_cqu/article/details/8069548由前一篇《方向赋值》,为找到的关键点即SIFT特征点赋了值,包含位置、尺度和方向的信息。接下来的步骤是关键点描述,即用用一组向量将这个关键点描述出来,这个描述子不但包括关键点,也包括关键点周围对其有贡献的像素点。用来作为目标匹配的依据(原创 2012-10-26 10:35:12 · 31781 阅读 · 34 评论 -
【OpenCV】SIFT原理与源码分析:方向赋值
《SIFT原理与源码分析》系列文章索引:http://blog.csdn.net/xiaowei_cqu/article/details/8069548由前一篇《关键点搜索与定位》,我们已经找到了关键点。为了实现图像旋转不变性,需要根据检测到的关键点局部图像结构为特征点方向赋值。也就是在findScaleSpaceExtrema()函数里看到的alcOrientationHist()语原创 2012-10-22 07:01:18 · 28813 阅读 · 14 评论 -
【OpenCV】SIFT原理与源码分析:关键点搜索与定位
《SIFT原理与源码分析》系列文章索引:http://blog.csdn.net/xiaowei_cqu/article/details/8069548由前一步《DoG尺度空间构造》,我们得到了DoG高斯差分金字塔:如上图的金字塔,高斯尺度空间金字塔中每组有五层不同尺度图像,相邻两层相减得到四层DoG结果。关键点搜索就在这四层DoG图像上寻找局部极值点。DoG局部极值点寻找原创 2012-10-21 21:25:37 · 31807 阅读 · 38 评论 -
【OpenCV】SIFT原理与源码分析:DoG尺度空间构造
《SIFT原理与源码分析》系列文章索引:http://blog.csdn.net/xiaowei_cqu/article/details/8069548尺度空间理论自然界中的物体随着观测尺度不同有不同的表现形态。例如我们形容建筑物用“米”,观测分子、原子等用“纳米”。更形象的例子比如Google地图,滑动鼠标轮可以改变观测地图的尺度,看到的地图绘制也不同;还有电影中的拉伸镜头等等…原创 2012-10-15 07:08:14 · 80477 阅读 · 86 评论 -
【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原创 2012-10-15 07:04:42 · 127140 阅读 · 35 评论 -
【OpenCV】在没有安装OpenCV的电脑运行OpenCV程序
题目来自OpenCV·China的每周一练:我们在做项目时,通常需要把依赖于opencv,vs(例如vs2005),或者vc(例如vc6.0)的程序,在没有安装相关环境的电脑上去运行。那么现在有哪些方法可以摆脱这些依赖?(提供可行建议即可得10分)http://www.opencvchina.com/thread-1368-1-1.html前面的童鞋讲得很全了,我再补充一下自己的理解~原创 2012-10-12 23:48:23 · 26572 阅读 · 6 评论 -
【OpenCV】Canny 边缘检测
Canny 边缘检测算法1986年,JOHN CANNY 提出一个很好的边缘检测算法,被称为Canny编边缘检测器[1]。Canny边缘检测根据对信噪比与定位乘积进行测度,得到最优化逼近算子,也就是Canny算子。类似与 LoG 边缘检测方法,也属于先平滑后求导数的方法。使用Canny边缘检测器,图象边缘检测必须满足两个条件:能有效地抑制噪声;必须尽量精确确定边缘的位置。算原创 2012-08-08 10:17:55 · 51023 阅读 · 19 评论 -
【OpenCV】边缘检测:Sobel、拉普拉斯算子
边缘边缘(edge)是指图像局部强度变化最显著的部分。主要存在于目标与目标、目标与背景、区域与区域(包括不同色彩)之间,是图像分割、纹理特征和形状特征等图像分析的重要基础。图像强度的显著变化可分为:阶跃变化函数,即图像强度在不连续处的两边的像素灰度值有着显著的差异;线条(屋顶)变化函数,即图像强度突然从一个值变化到另一个值,保持一较小行程后又回到原来的值。图像的边缘有方向和幅度原创 2012-08-04 13:41:26 · 142979 阅读 · 33 评论 -
【OpenCV】角点检测:Harris角点及Shi-Tomasi角点检测
角点特征检测与匹配是Computer Vision 应用总重要的一部分,这需要寻找图像之间的特征建立对应关系。点,也就是图像中的特殊位置,是很常用的一类特征,点的局部特征也可以叫做“关键特征点”(keypoint feature),或“兴趣点”(interest point),或“角点”(conrner)。关于角点的具体描述可以有几种:一阶导数(即灰度的梯度)的局部最大所对应的像素点;...原创 2012-07-31 13:25:07 · 92277 阅读 · 27 评论 -
【OpenCV】邻域滤波:方框、高斯、中值、双边滤波
邻域滤波(卷积)邻域算子值利用给定像素周围像素的值决定此像素的最终输出。如图左边图像与中间图像卷积禅城右边图像。目标图像中绿色的像素由原图像中蓝色标记的像素计算得到。通用线性邻域滤波是一种常用的邻域算子,输入像素加权得到输出像素:其中权重核 为“滤波系数”。上面的式子可以简记为:【方框滤波】最简单的线性滤波是移动平均或方框滤波,用原创 2012-07-26 10:52:27 · 70989 阅读 · 38 评论 -
【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原创 2012-07-22 07:10:45 · 128446 阅读 · 29 评论 -
【OpenCV】图像滤波 Image Filtering
译自《The OpenCV Reference Manual Release 2.3》CHAPTER THREE: IMGPROC. IMAGE PROCESSING 3.1 Image Filtering转载请注明出处:http://blog.csdn.net/xiaowei_cqu/article/details/7718831本节描述对2D图像执行的各种线性和非线性的滤波操作。翻译 2012-07-05 18:09:14 · 15328 阅读 · 1 评论 -
【OpenCV】图形生成算法:多边形的扫描转换
昨天被人问到“扫描线算法”,只有个模糊的印象,好多都想不起来了。。。复习一下多边形扫描线算法是针对计算机中多边形的显示。多边形三条或三条以上的线段首位顺次连接所组成的封闭图形,有凸多边形(任意两顶点间的连线均在多边形内)和凹多边形(任意两顶点间的连线有不在多边形内的部分)。多边形在计算机中有顶点表示和点阵表示两种。顶点表示就是用多边形的顶点序列来表示多边形。点阵表示是用位于原创 2012-06-26 20:39:02 · 22806 阅读 · 8 评论 -
【OpenCV】基于Adaboost和Haar-like特征人脸识别
毕设算是告一段落,里面用了一点点人脸识别,其实完全是OpenCV自带的,源自两篇论文:P. Viola and M. Jones. Rapid object detection using a boosted cascade of simple features.R. Lienhart and J. Maydt. An Extended Set of Haar-like Feature原创 2012-06-17 13:20:31 · 46815 阅读 · 41 评论 -
【OpenCV】图像几何变换:旋转,缩放,斜切
几何变换几何变换可以看成图像中物体(或像素)空间位置改变,或者说是像素的移动。几何运算需要空间变换和灰度级差值两个步骤的算法,像素通过变换映射到新的坐标位置,新的位置可能是在几个像素之间,即不一定为整数坐标。这时就需要灰度级差值将映射的新坐标匹配到输出像素之间。最简单的插值方法是最近邻插值,就是令输出像素的灰度值等于映射最近的位置像素,该方法可能会产生锯齿。这种方法也叫零阶插值,相应比较复...原创 2012-05-30 14:56:25 · 151602 阅读 · 21 评论 -
【OpenCV】图像代数运算:平均值去噪,减去背景
代数运算,就是对两幅图像的点之间进行加、减、乘、除的运算。四种运算相应的公式为:代数运算中比较常用的是图像相加和相减。图像相加常用来求平均值去除addtive噪声或者实现二次曝光(double-exposure)。图像相减用于减去背景或周期噪声,污染等。图像相加OpenCV中提供了相加的函数void cvAcc( const CvArr* i原创 2012-05-28 21:57:56 · 44945 阅读 · 9 评论 -
【OpenCV】直方图应用:直方图均衡化,直方图匹配,对比直方图
前面介绍了 数字图像灰度直方图,现在来尝试直方图的应用。直方图均衡化直方图均衡化(Histogram Equalization)是直方图最典型的应用,是图像点运算的一种。对于一幅输入图像,通过运算产生一幅输出图像,点运算是指输出图像的每个像素点的灰度值由输入像素点决定,即:直方图均衡化是通过灰度变换将一幅图像转换为另一幅具有均衡直方图,即在每个灰度级上都具有相同的象素点数过程。原创 2012-05-27 16:04:57 · 74945 阅读 · 47 评论 -
【OpenCV】数字图像灰度直方图
灰度直方图是数字图像中最简单且有用的工具,这一篇主要总结OpenCV中直方图CvHistogram的结构和应用。灰度直方图的定义灰度直方图是灰度级的函数,描述图像中该灰度级的像素个数(或该灰度级像素出现的频率):其横坐标是灰度级,纵坐标表示图像中该灰度级出现的个数(频率)。一维直方图的结构表示为高维直方图可以理解为图像在每个维度上灰度级分布的直方图。常见的是二维直方图。原创 2012-05-25 11:05:02 · 89848 阅读 · 39 评论 -
【OpenCV】有关内存释放的一些问题
转载请注明出处:http://blog.csdn.net/xiaowei_cqu/article/details/7586847前一天把系统整个重写了一遍,脉络清晰了很多,也终于解决了以前很多崩溃,异常退出的问题。这里小小总结一下自己遇到的麻烦。1、内存泄露内存泄露是说没有释放已经不能使用的内存,这里一般指堆的内存才需要显示的释放。比如用malloc,calloc,realloc,ne原创 2012-05-21 13:30:26 · 41751 阅读 · 19 评论 -
【OpenCV】高斯混合背景提取
转载请注明出处:http://blog.csdn.net/xiaowei_cqu/article/details/7566070在做火灾检测时尝试了一下用OpenCV中自带的高斯混合背景建模,由于是快速应用,也没推敲太细,日后有机会再研究吧。如果只是应用,不推敲原理是很简单的。OpenCV自己有一个高斯模型,源代码在安装目录...\opencvsetuppath\src\cvaux的cvb原创 2012-05-14 20:31:15 · 16536 阅读 · 5 评论 -
【OpenCV】访问图像中每个像素的值
转载请注明出处:http://blog.csdn.net/xiaowei_cqu/article/details/7557063!!此篇是基于IplImage* (C接口或者说2.1之前版本的接口,新的Mat的访问方式请参考博文:《访问Mat图像中每个像素的值》)IplImage是OpenCV中CxCore部分基础的数据结构,用来表示图像,其中Ipl是Intel Image P原创 2012-05-11 15:07:36 · 104669 阅读 · 53 评论 -
【OpenCV】分离多通道图像RGB的值
转载请注明出处:http://blog.csdn.net/xiaowei_cqu/article/details/7558657在《访问图像中每个像素的值》中我们介绍了存储图像的结构体IplImage的数据结构。多通道字节/浮点型图像中存储了每个像素RGB三信道的值。最近在做的项目中需要提取图像ROI区域RGB的平均值,发现有一个cvAvg函数:CvScalar cvAvg( co原创 2012-05-11 21:25:57 · 45300 阅读 · 18 评论