OpenCV 概述



OpenCV概述

  • 什么是OpenCV

    • 开源C/C++计算机视觉库.
    • 面向实时应用进行优化.
    • 跨操作系统/硬件/窗口管理器.
    • 通用图像/视频载入、存储和获取.
    • 由中、高层API构成.
    • 为Intel?公司的 Integrated Performance Primitives (IPP) 提供了透明接口.
  • 特性:
    • 图像数据操作 (分配,释放, 复制, 设定, 转换).
    • 图像与视频 I/O (基于文件/摄像头输入, 图像/视频文件输出).
    • 矩阵与向量操作与线性代数计算(相乘, 求解, 特征值, 奇异值分解SVD).
    • 各种动态数据结构(列表, 队列, 集, 树, 图).
    • 基本图像处理(滤波, 边缘检测, 角点检测, 采样与插值, 色彩转换, 形态操作, 直方图, 图像金字塔).
    • 结构分析(连接成分, 轮廓处理, 距离转换, 模板匹配,
      Hough转换, 多边形近似, 线性拟合, 椭圆拟合, Delaunay三角化).
    • 摄像头标定 (寻找并跟踪标定模板, 标定, 基础矩阵估计,
      homography估计, 立体匹配).
    • 动作分析(光流, 动作分割, 跟踪).
    • 对象辨识 (特征方法, 隐马可夫链模型HMM).
    • 基本GUI(显示图像/视频, 键盘鼠标操作, 滚动条).
    • 图像标识 (直线, 圆锥, 多边形, 文本绘图)
  • OpenCV 模块:
    • cv - OpenCV 主要函数.
    • cvaux - 辅助 (实验性)
      OpenCV 函数.
    • cxcore - 数据结构与线性代数算法.
    • highgui - GUI函数.

资料链接

  • 参考手册:

    • <opencv-root>/docs/index.htm
  • 网络资源:
    • 官方网页: http://www.intel.com/technology/computing/opencv/
    • 软件下载: http://sourceforge.net/projects/opencvlibrary/
  • 书籍:
    • Open Source Computer Vision Library by Gary R. Bradski, Vadim Pisarevsky, and Jean-Yves Bouguet, Springer, 1st ed. (June, 2006).
  • 视频处理例程 (位于 <opencv-root>/samples/c/目录中):
    • 色彩跟踪: camshiftdemo
    • 点跟踪: lkdemo
    • 动作分割: motempl
    • 边缘检测: laplace
  • 图像处理例程(位于<opencv-root>/samples/c/目录中):
    • 边缘检测: edge
    • 分割: pyramid_segmentation
    • 形态: morphology
    • 直方图: demhist
    • 距离转换: distrans
    • 椭圆拟合 fitellipse

OpenCV 命名约定

  • 函数命名:

cvActionTarget[Mod](...)

Action = 核心功能(例如 设定set, 创建create)

Target = 操作目标 (例如 轮廓contour, 多边形polygon)

[Mod]  = 可选修饰词 (例如说明参数类型)

  • 矩阵数据类型:

CV_<bit_depth>(S|U|F)C<number_of_channels>

S = 带符号整数

U = 无符号整数

F = 浮点数

例:   CV_8UC1 表示一个8位无符号单通道矩阵,

CV_32FC2 表示一个32位浮点双通道矩阵.

  • 图像数据类型:

IPL_DEPTH_<bit_depth>(S|U|F)

例:   IPL_DEPTH_8U 表示一个8位无符号图像.

IPL_DEPTH_32F 表示一个32位浮点数图像.

  • 头文件:

#include <cv.h>

#include <cvaux.h>

#include <highgui.h>

#include <cxcore.h>   // 不必要 - 该头文件已在 cv.h 文件中包含

编译命令

  • Linux系统:

g++ hello-world.cpp -o hello-world /

-I /usr/local/include/opencv -L /usr/local/lib  /

-lm -lcv -lhighgui -lcvaux

  • Windows系统:

注意在项目属性中设好OpenCV头文件以及库文件的路径.

C程序实例

////////////////////////////////////////////////////////////////////////

//

// hello-world.cpp

//

// 一个简单的OpenCV程序

// 它从一个文件中读取图像,将色彩值颠倒,并显示结果.

//

////////////////////////////////////////////////////////////////////////

#include <stdlib.h>

#include <stdio.h>

#include <math.h>

#include <cv.h>

#include <highgui.h>

int main(int argc, char *argv[])

{

IplImage* img = 0;

int height,width,step,channels;

uchar *data;

int i,j,k;

if(argc<2){

printf("Usage: main <image-file-name>/n/7");

exit(0);

}

// 载入图像

img=cvLoadImage(argv[1]);

if(!img){

printf("Could not load image file: %s/n",argv[1]);

exit(0);

}

// 获取图像数据

height    = img->height;

width     = img->width;

step      = img->widthStep;

channels  = img->nChannels;

data      = (uchar *)img->imageData;

printf("Processing a %dx%d image with %d channels/n",height,width,channels);

// 创建窗口

cvNamedWindow("mainWin", CV_WINDOW_AUTOSIZE);

cvMoveWindow("mainWin", 100, 100);

// 反色图像

for(i=0;i<height;i++) for(j=0;j<width;j++) for(k=0;k<channels;k++)

data[i*step+j*channels+k]=255-data[i*step+j*channels+k];

// 显示图像

cvShowImage("mainWin", img );

// wait for a key

cvWaitKey(0);

// release the image

cvReleaseImage(&img );

return 0;

}

OpenCV 概述

时间: 2024-12-24 04:58:48

OpenCV 概述的相关文章

opencv:opencv概述

opencv官方:www.opencv.org github:https://github.com/opencv opencv的组成结构 原文地址:https://www.cnblogs.com/wbyixx/p/12241736.html

基于 OpenCV 的人脸识别

基于 OpenCV 的人脸识别 一点背景知识 OpenCV 是一个开源的计算机视觉和机器学习库.它包含成千上万优化过的算法,为各种计算机视觉应用提供了一个通用工具包.根据这个项目的关于页面,OpenCV 已被广泛运用在各种项目上,从谷歌街景的图片拼接,到交互艺术展览的技术实现中,都有 OpenCV 的身影. OpenCV 起始于 1999 年 Intel 的一个内部研究项目.从那时起,它的开发就一直很活跃.进化到现在,它已支持如 OpenCL 和 OpenGL 的多种现代技术,也支持如 iOS

opencv 人脸识别

背景知识 OpenCV 是一个开源的计算机视觉和机器学习库.它包含成千上万优化过的算法,为各种计算机视觉应用提供了一个通用工具包.根据这个项目的关于页面,OpenCV 已被广泛运用在各种项目上,从谷歌街景的图片拼接,到交互艺术展览的技术实现中,都有 OpenCV 的身影. OpenCV 起始于 1999 年 Intel 的一个内部研究项目.从那时起,它的开发就一直很活跃.进化到现在,它已支持如 OpenCL 和 OpenGL 等现代技术,也支持如 iOS 和 Android 等平台. 1999

OpenCV For Java环境搭建与功能演示

OpenCV概述 OpenCV做为功能强大的计算机视觉开源框架,包含了500多个算法实现,而且还在不断增加,其最新版本已经更新到3.2.其SDK支持Android与Java平台开发,对于常见的图像处理需求几乎都可以满足,理应成为广大Java与Android程序员的首先的图像处理框架.Java中使用OpenCV的配置及其简单,可以毫不客气的说几乎是零配置都可以. 一:配置 配置引入OpenCV相关jar包,首先要下载OpenCV的自解压版本,下载地址: http://opencv.org/open

OpenCV3编程入门--读书笔记

一.OpenCV概述 1.OpenCV全程Open Source Computer Vision Library,即开源计算机视觉库.它是一个跨平台的开源计算机视觉库,可以运行在windows.linux.Mac OS.Android.iOS等操作系统上.OpenCV用C/C++编写,轻量且高效,还支持使用C#.Ch.Ruby等编程语言,同时提供对Python.Ruby.MATLAB等语言的接口. OpenCV官方主页:http://opencv.org OpenCV Github主页:http

OpenCV3编程入门_毛星云编著pdf高清版免费下载

下载地址:网盘下载 备用地址:网盘下载 内容提要OpenCV在计算机视觉领域扮演着重要的角色.作为一个基于开源发行的跨平台计算机视觉库,OpenCV实现了图像处理和计算机视觉方面的很多通用算法.<OpenCV3编程入门>以当前最新版本的OpenCV最常用最核心的组件模块为索引,深入浅出地介绍了OpenCV2和OpenCV3中的强大功能.性能,以及新特性.书本配套的OpenCV2和OpenCV3双版本的示例代码包中,含有总计两百多个详细注释的程序源代码与思路说明.读者可以按图索骥,按技术方向进行

OpenCV3编程入门_毛星云编著_电子工业出版下载 &#348453;

下载地址: http://www.gqylpy.com/di/17 <OpenCV3编程入门>毛星云编著PDF高清完整版-下载 内容提要 OpenCV在计算机视觉领域扮演着重要的角色.作为一个基于开源发行的跨平台计算机视觉库,OpenCV实现了图像处理和计算机视觉方面的很多通用算法.<OpenCV3编程入门>以当前最新版本的OpenCV最常用最核心的组件模块为索引,深入浅出地介绍了OpenCV2和OpenCV3中的强大功能.性能,以及新特性.书本配套的OpenCV2和OpenCV3

【计算机视觉】OpenCV人脸识别facerec源码分析1——FaceRecognizer概述

FaceRecognizer类 OpenCV中所有人脸识别的模型都是继承自FaceRecognizer这个基类,这个类提供了人脸识别算法的统一接口. class FaceRecognizer : public Algorithm { public: //! virtual destructor virtual ~FaceRecognizer() {} // Trains a FaceRecognizer. virtual void train(InputArray src, InputArray

OpenCV 中的三大数据类型( 概述 )

前言 OpenCV 提供了许多封装好了的类型,而其中,以三大类型最为核心.本文将大致介绍这三大类型. CvArr:不确定数组 它可以被视为一个抽象基类,后面的两大类型都继承此类型并扩展.只要某个函数的形参是这个类型,那么我们就可以把后面两种类型作为实参传递进去做处理. CvMat:多通道矩阵 它用来存放矩阵,OpeCV 提供了很多对此类型进行操作的函数,故使用此类型可以轻松玩转矩阵结构 :). IplImage:图像头 它用来存放图像,在之前的示例代码中,已经见到很多次了.由于对计算机而言,图像