代码改变世界

随笔分类 -  OpenCV

OpenCV进阶之路:一个简化的视频摘要程序

2014-04-24 17:08 by ☆Ronny丶, 7250 阅读, 收藏, 编辑
摘要: 一、前言 视频摘要又称视频浓缩,是对视频内容的一个简单概括,先通过运动目标分析,提取运动目标,然后对各个目标的运动轨迹进行分析,将不同的目标拼接到一个共同的背景场景中,并将它们以某种方式进行组合。视频摘要在视频分析和基于内容的视频检索中扮演着重要角色。 视频摘要主要运用在对长时间的监控视频的压缩上,它可以将不同时刻场景内目标的运动显示在同一时刻,这样大量减少了整个场景事件的时间跨度。一般的视频... 阅读全文

OpenCV进阶之路:神经网络识别车牌字符

2014-03-17 09:24 by ☆Ronny丶, 55746 阅读, 收藏, 编辑
摘要: 1. 关于OpenCV进阶之路 前段时间写过一些关于OpenCV基础知识方面的系列文章,主要内容是面向OpenCV初学者,介绍OpenCV中一些常用的函数的接口和调用方法,相关的内容在OpenCV的手册里都有更详细的解释,当时自己也是边学边写,权当为一种笔记的形式,所以难免有浅尝辄止的感觉,现在回头 阅读全文

OpenCV成长之路(10):视频的处理

2014-01-04 15:37 by ☆Ronny丶, 27265 阅读, 收藏, 编辑
摘要: 视频中包含的信息量要远远大于图片,对视频的处理分析也越来越成为计算机视觉的主流,而本质上视频是由一帧帧的图像组成,所以视频处理最终还是要归结于图像处理,但在视频处理中,有更多的时间维的信息可以利用。本文主要介绍OpenCV在处理视频时的一些基本函数。 一、视频帧的读取 OpenCV为视频的读入提供了一个类VideoCapture,下面我们说明一下类的几个重要的方法: 阅读全文

OpenCV成长之路(9):特征点检测与图像匹配

2014-01-03 17:56 by ☆Ronny丶, 37172 阅读, 收藏, 编辑
摘要: 特征点又称兴趣点、关键点,它是在图像中突出且具有代表意义的一些点,通过这些点我们可以用来识别图像、进行图像配准、进行3D重建等。本文主要介绍OpenCV中几种定位与表示关键点的函数。一、Harris角点角点是图像中最基本的一种关键点,它是由图像中一些几何结构的关节点构成,很多都是线条之间产生的交点。... 阅读全文

OpenCV成长之路(8):直线、轮廓的提取与描述

2014-01-02 21:21 by ☆Ronny丶, 41660 阅读, 收藏, 编辑
摘要: 基于内容的图像分析的重点是提取出图像中具有代表性的特征,而线条、轮廓、块往往是最能体现特征的几个元素,这篇文章就针对于这几个重要的图像特征,研究它们在OpenCV中的用法,以及做一些简单的基础应用。 一、Canny检测轮廓 在上一篇文章中有提到sobel边缘检测,并重写了soble的C++代码让其与matlab中算法效果一致,而soble边缘检测是基于单一阈值的,我们不能兼顾到低阈值的丰富边缘和高阈值时的边缘缺失这两个问题。而canny算子则很好的弥补了这一不足,从目前看来,canny边缘检测在做图像轮廓提取方面是最优秀的边缘检测算法。 canny边缘检测采用双阈值值法,高阈值用来检测图像中重要的、显著的线条、轮廓等,而低阈值用来保证不丢失细节部分,低阈值检测出来的边缘更丰富,但是很多边缘并不是我们关心的。最后采用一种查找算法,将低阈值中与高阈值的边缘有重叠的线条保留,其他的线条都删除。 阅读全文

OpenCV成长之路(7):图像滤波

2013-12-31 10:13 by ☆Ronny丶, 12538 阅读, 收藏, 编辑
摘要: 滤波实际上是信号处理里的一个概念,而图像本身也可以看成是一个二维的信号。其中像素点灰度值的高低代表信号的强弱。 高频:图像中灰度变化剧烈的点。 低频:图像中平坦的,灰度变化不大的点。 根据图像的高频与低频的特征,我们可以设计相应的高通与低通滤波器,高通滤波可以检测图像中尖锐、变化明显的地方;低通滤波可以让图像变得光滑,滤除图像中的噪声。 下面我们来看一下OpenCV中的一些滤波函数: 阅读全文

OpenCV成长之路(6):数学形态学基本操作及其应用

2013-12-26 15:23 by ☆Ronny丶, 6617 阅读, 收藏, 编辑
摘要: 数学形态学实际上可以理解为一种滤波行为,所以很多地方称它为形态学滤波。有了个这概念,我们就能更好的理解它。我们滤波中用的滤波器(kernel)在这里被称为结构元素,结构元素往往是由一个特殊的形状构成,如:线条、矩形、圆、菱形等。我们把结构元素的中心(Anchor Point)与图像上像素点对齐,然后结构元素覆盖的领域像素就是我们要分析的像素,我们定义一种操作就形成了一种形态学运算。 我们在这里不解释形态学操作的算法原理及它们的意义,有兴趣的可以参见相关数字图像处理方面的教材,或关注本博客,博主打算在OpenCV系列写完后,开始写图像处理方面算法系列的文章。 阅读全文

OpenCV成长之路(5):图像直方图的应用

2013-12-24 14:40 by ☆Ronny丶, 6957 阅读, 收藏, 编辑
摘要: 正如第4篇文章所说的图像直方图在特征提取方面有着很重要的作用,本文将举两个实际工程中非常实用的例子来说明图像直方图的应用。 一、直方图的反向映射。 我们以人脸检测举例,在人脸检测中,我们第一步往往需要先提取图像中皮肤区域来缩小人脸的检测范围,这一般获得皮肤的颜色范围还需要定义阈值并不断的调整,实际中参数太多而不容易控制。 这里我们就可以考虑用直方图的反射映射。 1,收集人脸皮肤样本。 2,拼合样本并计算其颜色直方图。 3,将得到的样本颜色直方图反射映射到待检测的图片中,然后进行阈值化即可。 这里为了简单起见,我们只用两张人脸样本,实际中可以进一步扩展。 阅读全文

OpenCV成长之路(4):图像直方图

2013-12-23 16:44 by ☆Ronny丶, 15923 阅读, 收藏, 编辑
摘要: 一、图像直方图的概念 图像直方图是反映一个图像像素分布的统计表,其实横坐标代表了图像像素的种类,可以是灰度的,也可以是彩色的。纵坐标代表了每一种颜色值在图像中的像素总数或者占所有像素个数的百分比。 图像是由像素构成,因为反映像素分布的直方图往往可以作为图像一个很重要的特征。在实际工程中,图像直方图在特征提取、图像匹配等方面都有很好的应用。 阅读全文

OpenCV成长之路(3):模仿PhotoShop中魔术棒工具

2013-12-20 11:17 by ☆Ronny丶, 7045 阅读, 收藏, 编辑
摘要: 本文的主题实际上是图像的颜色空间的转换,借助一个颜色选取程序来说明OpenCV中颜色转换函数的用法以及一些注意事项。 一、几种常见的颜色空间: RGB颜色空间:RGB采用加法混色法,因为它是描述各种“光”通过何种比例来产生颜色。光线从暗黑开始不断叠加 产生颜色。RGB描述的是红绿蓝三色光的数值。数字图像存储方面一般都是用RGB模式,值得注意的是OpenCV里三通道的存储顺序是BGR。 HSV,HSI:这两个颜色格式都是根据人眼对颜色的区分来定义的格式,其中H(hue)表示色相,S(saturation)表示饱和度,V(value)表示明度,I(intensity)代表了亮度。 Lab空间:模型中均匀改变对应于在感知颜色中的均匀改变,所以我们可以把Lab想像为颜色空间中的一个点,相邻的点靠的越近说明两者的颜色越接近,所以Lab空间常用来度量两个颜色的相似性。 更多颜色空间的知识可以参考:http://en.wikipedia.org/wiki/Color_space 阅读全文

OpenCV成长之路(2):图像的遍历

2013-12-19 14:49 by ☆Ronny丶, 37783 阅读, 收藏, 编辑
摘要: 我们在实际应用中对图像进行的操作,往往并不是将图像作为一个整体进行操作,而是对图像中的所有点或特殊点进行运算,所以遍历图像就显得很重要,如何高效的遍历图像是一个很值得探讨的问题。 一、遍历图像的4种方式:at(i,j) Mat类提供了一个at的方法用于取得图像上的点,它是一个模板函数,可以取到任何类型的图像上的点。下面我们通过一个图像处理中的实际来说明它的用法。 在实际应用中,我们很多时候需要对图像降色彩,因为256*256*256实在太多了,在图像颜色聚类或彩色直方图时,我们需要用一些代表性的颜色代替丰富的色彩空间,我们的思路是将每个通道的256种颜色用64种代替,即将原来256种颜色划分64个颜色段,每个颜色段取中间的颜色值作为代表色。 阅读全文

OpenCV成长之路 01、图像的读写与显示

2013-12-18 17:24 by ☆Ronny丶, 10736 阅读, 收藏, 编辑
摘要: 一、工具篇工欲善其事,必先利其器。学习OpenCV,肯定少不于基本的编程工具与OpenCV库。在Windows平台下你可以选择Visual Studio、CodeBlock等,当然你也可以选择在Linux平台,用VI、codeBlock都是可以的。编程平台的选择看个人爱好以及项目的开发环境。然后是O... 阅读全文