opencv基础知识,《OpenCV教程——基础篇》

  opencv基础知识,《OpenCV教程——基础篇》

  因为我们想找到矩阵的特征向量和特征值,我们想使用MTL库,因为MTL在成熟度和运行效率方面是有保证的。没想到用MTL库求特征向量矩阵和特征值还要依赖其他库,只好另辟蹊径。幸运的是,我找到了OpenCV,一个由intel资助的开源库。它的全称是开源计算机视觉库(意思是开源计算机视觉库)。

  要下载OpenCV库,你可以在http://www.opencv.org.cn/index.php/Download.下载的OpenCV中文网站下载,我发现OpenCV库真的很人性化。——可以通过安装包安装。安装后已经有支持VS 2005的解决方案文件,基本不需要配置编译选项。因为我只想要里面的矩阵运算,所以这次只编译了cxcore项目(呵呵,进一步的学习以后再说)。运行VS 2005的build命令生成库文件,在调试模式下生成:cxcore.lib和cxcore100d.dll,在发布模式下生成cxcore100.dll和cxcore.lib(可以看到调试文件比发布文件多了一个字母D)。

  现在正式开始使用Opencv库。当然,要使用它,您必须复制出相关的头文件。这里使用它的矩阵操作是把安装目录下的CV文件夹复制出来,然后包含在你的程序里。

  使用库的第一个问题是实现从标准类型到库类型的转换(有时候我不明白为什么库不用标准C类型?比如char,int等。可能这是出于效率的考虑)。OpenCV库求特征值和特征向量的功能是:

  void cvEigenVV( CvArr* mat,CvArr* evects,CvArr* evals,double EPS=0);

  垫子

  输入对称方阵。将在处理过程中更改。

  事件

  特征向量输出矩阵连续存储在行中。

  评估

  输出特征值矩阵,按降序存储(当然特征值和特征向量的排序是同步的)。

  蓄电池

  对角化的精度(通常情况下,DBL=10-15就足够了)。

  开始测试,构建一个控制台程序并编写一个测试函数:

  void TestOpenCV(void)

  //a是输入对称方阵。

  双a[5][5]=

  {10.0, 1.0, 2.0, 3.0, 4.0},

  { 1.0, 9.0, -1.0, 2.0, -3.0},

  { 2.0, -1.0, 7.0, 3.0, -5.0},

  { 3.0, 2.0, 3.0, 12.0, -1.0},

  { 4.0, -3.0, -5.0, -1.0, 15.0}

  //构造输入方阵

  CvMat SrcMatrix=cvMat(5,5,CV_64FC1,a);

  使用cvEigenVV函数要注意以下三点:

  1.对称方阵、特征向量输出矩阵、特征值输出矩阵的构造必须分为静态数组和动态开内存数组。如果是静态数组,可以用上面的方法构造矩阵,如果是动态开内存数组,那么在构造矩阵类时要用下面的方法:

  double * * pf matrix=new double *[nInBandNum];

  double * * pf vector=new double *[nInBandNum];

  呵呵,是不是感觉有点麻烦?我想找出原因,因为OpenCV的matrix类是一维数组,静态数组的地址是连续的,因为其他数组元素可以用数组的第一个地址直接访问,而多维动态数组的行和地址是不连续的,所以必须通过赋值来构造。

  2.对称方阵、特征向量输出矩阵、特征值矩阵的行列必须匹配。比如对称方阵是5行5列,那么特征向量输出矩阵是5行5列,特征值矩阵是1行5列。

  3.特征值矩阵按降序排列(从最大到最小)。

  有兴趣的朋友可以看看cvEigenVV的源码是怎么求特征向量矩阵和特征值矩阵的。我大致看了一下,用的是雅可比法。

  参考网站和文档:

  1.http://www.opencv.org.cn/index.php

  2.OpenCV参考手册,中文译者:余,中国科学院自动化研究所,自由软件协会,HUNNISH,阿苏数码

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • opencv图像识别数字,opencv 识别
  • opencv图像识别数字,opencv 识别,如何基于opencv实现简单的数字识别
  • opencv图像的旋转角度计算,opencv图像仿射变换
  • opencv图像的旋转角度计算,opencv图像仿射变换,OpenCV图像几何变换之透视变换
  • opencv图像的旋转角度计算,opencv 旋转任意角度
  • opencv图像的旋转角度计算,opencv 旋转任意角度,opencv图片的任意角度旋转实现示例
  • opencv图像处理函数,opencv图像轮廓合并
  • opencv图像处理函数,opencv图像轮廓合并,OpenCV图像处理之七种常用图像几何变换
  • opencv双线性插值函数,opencv 图像插值
  • LBPH人脸识别,基于opencv的人脸识别技术
  • LBPH人脸识别,基于opencv的人脸识别技术,Opencv LBPH人脸识别算法详解
  • ,,OpenCV黑帽运算(BLACKHAT)的使用
  • opencv双线性插值函数,opencv 图像插值,C++ OpenCV实现图像双三次插值算法详解
  • ,,C语言 OpenCV实现柱面投影
  • ,,C++ Opencv imfill孔洞填充函数的实现思路与代码
  • 留言与评论(共有 条评论)
       
    验证码: