`
Riddick
  • 浏览: 632750 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

OpenCV基本知识

阅读更多

1、OpenCV概述

 

1) 什么是OpenCV 
开源C/C++计算机视觉库.


面向实时应用进行优化.


跨操作系统/硬件/窗口管理器.


通用图像/视频载入、存储和获取.


由中、高层API构成.


为Intel®公司的 Integrated Performance Primitives (IPP) 提供了透明接口.


2) 特性:
图像数据操作 (分配,释放, 复制, 设定, 转换).


图像与视频 I/O (基于文件/摄像头输入, 图像/视频文件输出).


矩阵与向量操作与线性代数计算(相乘, 求解, 特征值, 奇异值分解SVD).


各种动态数据结构(列表, 队列, 集, 树, 图).


基本图像处理(滤波, 边缘检测, 角点检测, 采样与插值, 色彩转换, 形态操作, 直方图, 图像金字塔).


结构分析(连接成分, 轮廓处理, 距离转换, 模板匹配, Hough转换, 多边形近似, 线性拟合, 椭圆拟合, Delaunay三角化).


摄像头标定 (寻找并跟踪标定模板, 标定, 基础矩阵估计, homography估计, 立体匹配).


动作分析(光流, 动作分割, 跟踪).


对象辨识 (特征方法, 隐马可夫链模型HMM).


基本GUI(显示图像/视频, 键盘鼠标操作, 滚动条).


图像标识 (直线, 圆锥, 多边形, 文本绘图)


3) OpenCV 模块:
cv - OpenCV 主要函数.


cvaux - 辅助 (实验性) OpenCV 函数.


cxcore - 数据结构与线性代数算法.


highgui - GUI函数.


2、资料链接

 

1) 参考手册:
<opencv-root>/docs/index.htm


2) 网络资源:
官方网页: http://www.intel.com/technology/computing/opencv/


软件下载: http://sourceforge.net/projects/opencvlibrary/


3) 书籍:
Open Source Computer Vision Library by Gary R. Bradski, Vadim Pisarevsky, and Jean-Yves Bouguet, Springer, 1st ed. (June, 2006).


4) 视频处理例程 (位于 <opencv-root>/samples/c/目录中):
色彩跟踪: camshiftdemo


点跟踪: lkdemo


动作分割: motempl


边缘检测: laplace


5) 图像处理例程(位于<opencv-root>/samples/c/目录中):
边缘检测: edge


分割: pyramid_segmentation


形态: morphology


直方图: demhist


距离转换: distrans


椭圆拟合 fitellipse


3、OpenCV 命名约定

 

1) 函数命名:
    cvActionTarget[Mod](...)

 

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


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


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

 

2) 矩阵数据类型:
    CV_<bit_depth>(S|U|F)C<number_of_channels>

 

    S = 带符号整数


    U = 无符号整数


    F = 浮点数

 

    例:   CV_8UC1 表示一个8位无符号单通道矩阵,
          CV_32FC2 表示一个32位浮点双通道矩阵.

 

3) 图像数据类型:
    IPL_DEPTH_<bit_depth>(S|U|F)

 

    例:   IPL_DEPTH_8U 表示一个8位无符号图像.
          IPL_DEPTH_32F 表示一个32位浮点数图像.

 

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

 

5) 编译命令

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入门基础知识-数据载入、显示与保存学习笔记

    数据载入、显示与保存 1 前言说明: 1 ...Mat类基本介绍: 2 创建Mat类 2 通道: 2 Mat类构造与赋值 3 二.创建 Mat 对象 7 图像识别与处理之Opencv——Mat类_Mat类 8 2、 create()函数创建对象 10

    opencv入门教程.zip

    OpenCV 是一个广受欢迎的开源计算机视觉库,它提供了很多函数,实现了 ...本小册子希望为初学者提供引导,使初学者快速了解 OpenCV 的基本数 据结构以及用法。 此外,如您发现有错误之处,欢迎来信指正。

    OpenCV入门教程pdf文字版

    OpenCV OpenCV OpenCVOpenCV是一个广受欢迎的开源计算机视觉库 是一个广受欢迎的开源计算机视觉库 ,它提供了 很多函数,实现很多计算机视觉法,从最基本的 滤波到高级物体检测 皆有涵盖 。很多 初学者希望快速掌握 ...

    计算机视觉图像处理Opencv基础知识(附详解代码)上 计算机视觉.pdf

    计算机视觉图像处理Opencv基础知识(附详解代码)上 计算机视觉.pdf

    个人整理的opencv最基本入门资料.pdf

    总结的opencv初学者的基础知识。对于想入门的同学是个不错的选择

    opencv基础

    opencv基础知识总结,包括opencv的基本知识基础,以及代码应用

    与opencv一起玩:OPENCV基本知识和微型项目

    用opencv玩 OPENCV基本知识和小型项目 使用OPENCV进行基本图像操作 图像色彩转换 图像模糊 图像转换为边缘(Canny) 图像扩张 影像侵蚀 使用的图书馆 麻木 OpenCV

    openCV快速入门.pdf

    摘要:本文旨在帮助读者快速入门OpenCV,而无需阅读冗长的参考手册。掌握了OpenCV的以下基础知识后,有需要的话再查阅相关的参考手册。

    OpenCV入门教程

    OpenCV是一个广受欢迎的开源计算机视觉库 是一个广受欢迎的开源计算机视觉库 ,它提供了 很多函数,实现很多计算机视觉法,从最基本的 滤波到高级物体检测 皆有涵盖 。很多 初学者希望快速掌握 OpenCV OpenCV ...

    OpenCV入门教程 带目录

    OpenCV入门教程 带目录 讲述最基本的开发流程 讲述图像基础知识 讲述opencv最基础的图像操作 讲述opencv最基础的视频操作

    OpenCV3编程入门

    , 本书要求读者具有基础的C/C++知识,适合研究计算机视觉以及相关领域的在校学生和老师、初次接触OpenCV但有一定C/C++编程基础的研究人员,以及已有过OpenCV 1.0编程经验,想快速了解并上手OpenCV2、OpenCV3编程的...

    OpenCV3编程入门(完整版).pdf+代码

    本书要求读者具有基础的C/C++知识,适合研究计算机视觉以及相关领域的在校学生和老师、初次接触OpenCV但有一定C/C++编程基础的研究人员,以及已有过OpenCV 1.0编程经验,想快速了解并上手OpenCV2、OpenCV3编程的...

    opencv图像处理入门

    opencv图像处理入门,基础知识,基础简介,入门学习。从最基础开始学习。

    OpenCV入门教程于仕琪

    很多计算机视觉算法,算法从最基本的滤波到高级的物体检测皆有涵盖。很多 初学者希望快速掌握 OpenCV 的使用方法,但往往会遇到各种各样的困难。其 实仔细分析,造成这些困难的原因有两类:第一类是 C/C++编程基础不...

    openCV3编程入门

    本书要求读者具有基础的C/C++知识,适合研究计算机视觉以及相关领域的在校学生和老师、初次接触OpenCV但有一定C/C++编程基础的研究人员,以及已有过OpenCV 1.0编程经验,想快速了解并上手OpenCV2、OpenCV3编程的...

    opencv入门教程

    openCV入门教材 适合opencv初学者了解opencv的一些编程基础知识 包括编程基础知识和openCV的基础知识

    OpenCV3编程入门 毛星云

    本书要求读者具有基础的C/C++知识,适合研究计算机视觉以及相关领域的在校学生和老师、初次接触OpenCV但有一定C/C++编程基础的研究人员,以及已有过OpenCV 1.0编程经验,想快速了解并上手OpenCV2、OpenCV3编程的...

Global site tag (gtag.js) - Google Analytics