摘要:前言 本文将主要讲解如何使用 OpenCV 实现图像分割,这也是图像金字塔在 OpenCV 中的一个重要应用。关于图像分割 在计算机视觉领域,图像分割(Segmentation)指的是将数字图像细分为多个图像子区域(像素的集合)(也被称作超像素)的过程。图像分割的目的是简化或改变图像的表示形式,...
阅读全文
摘要:前言 图像金字塔是计算机图形学中非常重要的一个概念。 本文将详细介绍这个概念,以及它的实现与应用。图像金字塔的定义 图像金字塔是一组图像的集合,集合中的所有图像都是通过对某一图像连续降采样得到的一组图像序列。 有两种经典的金字塔:高斯金字塔和拉普拉斯金字塔,前者采用向下采样,后者是向上采样需...
阅读全文
摘要:前言 漫水填充算法是用来标记一片区域的:设置一个种子点,然后种子点附近的相似点都被填充同一种颜色。 该算法应用性很广,比如目标识别,photoshop 的魔术棒功能等等,是填充类算法中应用最为广泛的一个算法。漫水填充算法函数 -cvFloodFill() 函数原型: 1 void cvFloo...
阅读全文
摘要:前言 有时会碰到一张图片太大了,想将它缩小。本文将讲解一个很好用的函数解决这个问题。图像尺寸调整函数 cvResize()1 // 图像尺寸调整函数2 void Resize (3 const CvArr * src, // 待处理图像4 CvArr *...
阅读全文
摘要:前言 膨胀就是对图中的每个像素取其核范围内最大的那个值,腐蚀就相反。这两个操作常用来突出显示图的某个高亮部分或者昏暗部分以及去噪。本文展示两个分别对图像进行膨胀和腐蚀的例子。膨胀和腐蚀函数cvErode() 和cvDilate() 函数原型: 1 // 膨胀函数 2 void cvcvDilat...
阅读全文
摘要:前言 平滑是图像处理中很重要的操作,其主要用途是降噪。Open CV 提供了 5 种不同的平滑方法:简单模糊,简单无缩放变换的模糊,中值模糊,高斯模糊和双边滤波,它们都通过函数 cvSmooth 实现。 关于几种平滑的具体实现步骤及相关基础知识,本文不做讲解( 网上很多相关资料 ),仅就调用封装...
阅读全文
摘要:前言 本文将介绍 OpenCV 中的图像结构 IplImage 并提供一些很实用的技巧。 更多的矩阵处理函数还请参阅相关资料。IplImage 的类型定义 1 typedef struct _IplImage 2 { 3 int nSize; /* IplImage大小 */ 4 ...
阅读全文
摘要:前言 本文将介绍 OpenCV 中的矩阵结构 CvMat 并提供几个很常用的矩阵使用方法。 更多的矩阵处理函数还请参阅相关资料。CvMat的类型定义 1 typedef struct CvMat 2 { 3 int type; // 数据类型 4 int step; ...
阅读全文
摘要:前言 OpenCV 提供了许多封装好了的类型,而其中,以三大类型最为核心。本文将大致介绍这三大类型。CvArr:不确定数组 它可以被视为一个抽象基类,后面的两大类型都继承此类型并扩展。只要某个函数的形参是这个类型,那么我们就可以把后面两种类型作为实参传递进去做处理。CvMat:多通道矩阵 它用...
阅读全文
摘要:前言 前文介绍了一个简单的变换。需要注意的是,很多时候,输出和输入图像的格式是不同的( 大小,深度,通道 )。在本文将展示的程序中,对图像进行了缩放( 使用cvPyrDown 函数 ),这种情况下需要先定制好输出图像的格式,然后再将其与输入图像一起传递进缩放函数。代码示例 1 // 此头文件包含图...
阅读全文
摘要:前言 图像的平滑处理,是计算机视觉中非常重要的操作,本文将展示一个可以对图像进行平滑处理的简单程序。而关于平滑处理深层次的知识,会在以后的文章中重点探讨。代码示例 1 // 此头文件包含图像IO函数的声明 2 #include "highgui.h" 3 // 此头文件包含基本的图像处理函数和高...
阅读全文
摘要:前言 在前文中给出了一个非常简短的视频播放程序,但它没有实现常规视频播放器中的播放滚动条功能,本文对此视频播放器程序加以改进,实现此功能。滚动条的实现思路 滚动条的功能实质上就是从一帧跳跃到另外一帧,它的实现框架大致是这样的: 1. 首先要定义一个全局变量,在每次滚动条位置发生改变时将新的位置...
阅读全文
摘要:前言 本文展示一个播放 AVI 视频的程序。( 呵呵是 AVI 视频不是 AV 视频噢! )代码示例 1 // 此头文件包含图像IO函数的声明 2 #include "highgui.h" 3 4 int main (void) { 5 6 // 定义一个窗口来播放视频 7 c...
阅读全文
摘要:前言 本文展示一个显示图像的示例程序,它用于从硬盘加载一副图像并在屏幕上显示。代码示例 1 // 此头文件包含图像IO函数的声明 2 #include "highgui.h" 3 4 int main (void) { 5 6 // 将D盘目录下名为" 1.jpg "的图像加载至内存并...
阅读全文
摘要:前言 我们都知道 OpenCV 是一个开源的计算机视觉库,那么里面到底有哪些东西?本文将为你解答这个问题。模块一:CV 这个模块是 OpenCV 的核心,它包含了基本的图像处理函数和高级的计算机视觉算法。模块二:HighGUI 这个模块包含了图像和视频的基本 GUI 输入输出函数。模块三:MI...
阅读全文
摘要:前言 本文介绍如何搭建 OpenCV 开发环境 配置如下: 操作系统:WIN7 32位 开发平台:VS2010 OpenCV 版本:2.4.8第一步:安装 OpenCV 2.4.8 1. 登陆 OpenCV 官方网站:http://opencv.org/,获取 Windows...
阅读全文
摘要:什么是OpenCV OpenCV是一个计算机视觉库。OpenCV的特点 1. 开源 意味着免费,这个是最大的优势。 2. 高效 OpenCV是用C语言和少量C++语言来实现的。因此执行效率不错。 3. 通用 OpenCV提供了各种语言接口( 如C++ Python等 ),同时能应用于多...
阅读全文
摘要:什么是计算机视觉 计算机视觉,就是研究如何让计算机“看”的一门学问。也即通过分析图像,获取图像的具体信息( 如两点距离 ),甚至隐含信息( 如某个物体的运动速度 )。人和计算机的视觉类比 下面通过对比人与计算机视觉的产生过程,加深对计算机视觉这一概念的认识。 1. 物体投影于人眼 对于计算机...
阅读全文