OpenCV常用库函数
06-08 阅读数 8508
一、core 模块1、Mat-基本图像容器 Mat 是一个类,由两个数据部分组成:矩阵头(包含矩阵尺寸,存储方法,存储地址等信息)和一个指向存储所有像素值的矩阵(根据所选存储方法的不同矩阵可以... 博文 来自: weixin_42029090的博客
以前都是直接用opencv,都没有仔细研究过,这次把库文件都介绍一下。
当我们安装完opencv中,你会发现在opencv文件夹中有两个文件夹,build和source,那它们分别是干什么的呢。
首先说这两者的关系,sources放的是opencv中的cpp文件,相当于一个工厂,build放的是opencv中的h、hpp、lib文件,相当于一个工具,opencv的开发者(当然开源后的使用者也可以)通过sources中的源文件,构建出build中的库文件,然后使用者就可以链接这些库,include<头文件>。一般非开源的程序和库是不开放sources的,而opencv作为一个开源库,这些也是使用者可见的。
source里面是各种各样的函数实现,对于只想用opencv的人来说,只关心我怎么用,于是开发者就会使用这些源文件构建出库,这些库里面包含了函数实现。这些库就是各种lib,然后还有头文件。
build里面只有接口,没有cpp中的实现什么的,build是对使用者的,使用者只用知道接口就行了,不需要知道这个是怎么做到的。当然因为opencv开源,所以使用者也可以直接查看源文件。
具体来说,soucees里面放的是函数具体的实现,比如有gray方法,对一个mat的像素怎么使它变成灰度化。
使用者include<头文件>,头文件里面是各种接口,比如gray,就是一个gray(MAt img),使用者链接这些库,inluce<头文件>,然后在程序中调用gray,然后程序运行的时候会进行链接时,在各种依赖库中寻找gray的实现,因为我们连接了opencv的库,所以在opencv的lib中就找到了gray的实现,然后就调用这个实现,然后就灰度化了,就是这个么过程。
举个不是很恰当的例子,build就像是卖给用户的macbook,用户只用知道怎么用,这个操作系统很好用,不卡,不用知道这个操作系统怎么实现了。怎么实现的就在source里面,非开源的程序和库是不可能让你看到source的。
在build文件夹中,如下,
.
首先,doc文件夹下放的是各种关于opencv的文档;include文件夹下是所有的头文件;其余四个分别是:一个给java用的库、一个给python用、一个给x86win用、一个给x64win用。两个cmake文件都是cmake的一些配置,很强大的编译工具。
分为opencv和opencv2.
.
这里借用博客1和博客2的介绍。
1、opencv
其中cv.h中包含的头文件:
#include "opencv2/core/core_c.h"
#include "opencv2/core/core.hpp"
#include "opencv2/imgproc/imgproc_c.h"
#include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/video/tracking.hpp"
#include "opencv2/features2d/features2d.hpp"
#include "opencv2/flann/flann.hpp"
#include "opencv2/calib3d/calib3d.hpp"
#include "opencv2/objdetect/objdetect.hpp"
#include "opencv2/legacy/compat.hpp"
cv.hpp中包含头文件:
#include
也就是说cv.hpp是包含cv.h的,程序中凡用到cv.h的地方都可以用cv.hpp 替换,那么为什么又要设置hpp文件呢?
hpp是Header Plus Plus的简写,与 .h 文件类似。但与之不同的是,.hpp将*.cpp中的实现代码也写入其中,使得定义与实现都包含在同一文件中。这样做带来的好处显而易见,无需再将cpp文件添加到项目中编译,减少了编译次数,也不用发布烦人的lib,dll 文件,因此非常适合用来编写公用的开源库。
文件夹opencv中的头文件都是类似的,均包含文件夹opencv2里的头文件。所以我们如果是从低版本的opencv学习过渡到高版本的opencv的话,如果不适应可以先以opencv文件夹里的文件调用为标准。如果熟悉opencv里的函数分布,也可以直接调用opencv2文件夹里的具体头文件,这样在头文件预编译提高效率。
2、opencv2
先看opencv.hpp文件:
#include "opencv2/core/core_c.h"
#include "opencv2/core/core.hpp"
#include "opencv2/flann/miniflann.hpp"
#include "opencv2/imgproc/imgproc_c.h"
#include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/photo/photo.hpp"
#include "opencv2/video/video.hpp"
#include "opencv2/features2d/features2d.hpp"
#include "opencv2/objdetect/objdetect.hpp"
#include "opencv2/calib3d/calib3d.hpp"
#include "opencv2/ml/ml.hpp"
#include "opencv2/highgui/highgui_c.h"
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/contrib/contrib.hpp"
很明显opencv.hpp的头文件包含了opencv库里的所有头文件。
接着看opencv_modules.hpp文件:
#define HAVE_OPENCV_CALIB3D
#define HAVE_OPENCV_CONTRIB
#define HAVE_OPENCV_CORE
#define HAVE_OPENCV_FEATURES2D
#define HAVE_OPENCV_FLANN
#define HAVE_OPENCV_GPU
#define HAVE_OPENCV_HIGHGUI
#define HAVE_OPENCV_IMGPROC
#define HAVE_OPENCV_LEGACY
#define HAVE_OPENCV_ML
#define HAVE_OPENCV_NONFREE
#define HAVE_OPENCV_OBJDETECT
#define HAVE_OPENCV_OCL
#define HAVE_OPENCV_PHOTO
#define HAVE_OPENCV_STITCHING
#define HAVE_OPENCV_SUPERRES
#define HAVE_OPENCV_TS
#define HAVE_OPENCV_VIDEO
#define HAVE_OPENCV_VIDEOSTAB
其解释如下:
【calib3d】:其实就是就是Calibration(校准)加3D这两个词的组合缩写。这个模块主要是相机校准和三维重建相关的内容。基本的多视角几何算法,单个立体摄像头标定,物体姿态估计,立体相似性算法,3D信息的重建等等。
【contrib】:也就是Contributed/Experimental Stuf的缩写, 该模块包含了一些最近添加的不太稳定的可选功能,不用去多管。2.4.8之后有新型人脸识别, 立体匹配 ,人工视网膜模型等技术。
【core】: 核心功能模块,尤其是底层数据结构和算法函数。包含如下内容:
【imgproc】: Image和Processing这两个单词的缩写组合。图像处理模块,这个模块包含了如下内容:
【features2】: d也就是Features2D, 2D功能框架 ,包含兴趣点检测子、描述子以及兴趣点匹配框架。包含如下内容:
【flann】: Fast Library for Approximate Nearest Neighbors,高维的近似近邻快速搜索算法库, 包含两个部分:快速近似最近邻搜索和聚类。
【gpu】: 运用GPU加速的计算机视觉模块。
【highgui】: 也就是high gui,高层GUI图形用户界面,包含媒体的I / O输入输出, 视频捕捉、图像和视频的编码解码、图形交互界面的接口等内容。
【legacy】: 一些已经废弃的代码库,保留下来作为向下兼容,包含如下相关的内容。
【ml】: Machine Learning,机器学习模块, 基本上是统计模型和分类算法,包含如下内容。
【nonfree】: 也就是一些具有专利的算法模块 ,包含特征检测和GPU相关的内容。最好不要商用,可能会被告哦。
【objdetect】: 目标检测模块,包含Cascade Classification(级联分类)和Latent SVM这两个部分。
【ocl】: 即OpenCL-accelerated Computer Vision,运用OpenCL加速的计算机视觉组件模块。
【photo】: 也就是Computational Photography,包含图像修复和图像去噪两部分。
【stitching】: images stitching,图像拼接模块,包含如下部分。
【superres】: SuperResolution,超分辨率技术的相关功能模块。
【ts】: opencv测试相关代码,不用去管他。
【video】: 视频分析组件,该模块包括运动估计,背景分离,对象跟踪等视频处理相关内容。
【Videostab】: Video stabilization,视频稳定相关的组件。
首先,这里面放的都是一些库文件,只不过X64面向64位,X86是32位的,然后以X64为例,
.
.
这是代表编译给不同版本的visual studio用的库,这里以vc12为例。
.
.
bin文件夹下:dll文件,动态链接库。具体实现的内容。计算机环境变量中,这个路径是要加到path中的。
lib文件夹下:配置opencv环境时,添加的lib库。用来链接。
staticlib文件夹下:静态库。
静态库是编译时就把整个函数加载进去,所以可执行文件会变大。动态库是编译时加进去的是一个函数表,运行时才会从dll里面加载对应的函数实现。
这里参考于博客给出一个关于dll和lib的解释。
共有两种库:
共有两种链接方式:
关于lib和dll的区别如下:
lib是编译时用到的,dll是运行时用到的。如果要完成源代码的编译,只需要lib;如果要使动态链接的程序运行起来,只需要dll。
如果有dll文件,那么lib一般是一些索引信息,记录了dll中函数的入口和位置,dll中是函数的具体内容;如果只有lib文件,那么这个lib文件是静态编译出来的,索引和实现都在其中。使用静态编译的lib文件,在运行程序时不需要再挂动态库,缺点是导致应用程序比较大,而且失去了动态库的灵活性,发布新版本时要发布新的应用程序才行。
动态链接的情况下,有两个文件:一个是LIB文件,一个是DLL文件。LIB包含被DLL导出的函数名称和位置,DLL包含实际的函数和数据,应用程序使用LIB文件链接到DLL文件。在应用程序的可执行文件中,存放的不是被调用的函数代码,而是DLL中相应函数代码的地址,从而节省了内存资源。DLL和LIB文件必须随应用程序一起发行,否则应用程序会产生错误。如果不想用lib文件或者没有lib文件,可以用WIN32 API函数LoadLibrary、GetProcAddress装载。
。
1.0安装OpenCV库
04-15 阅读数 1676
本文将介绍如何进行OpenCV库的安装。安装方式 你会发现一般有两种安装,一是直接下载exe安装;二是下载源代码自己用CMake编译。一般情况下,如果我们的开发环境和exe相符合,直接下载exe安装... 博文 来自: 阿兵先生的专栏
OpenCV模块库简单介绍
02-27 阅读数 5133
OpenCV从2.2开始后,被划分成多个模块.这些模块编译成库文件后,位于lib文件夹下.模块功能opencv_core模块,包含核心功能,尤其是底层数据结构和算法函数opencv_... 博文
opencv库的基本使用(python)
06-27 阅读数 1万+
opencv的基本操作 博文 来自: Lxingmo的博客
挖个坑,比较下各种图像处理库的处理速度,即优势~
05-27
这是网上找的,一个网友对四大函数库的使用感受 1.对OpenCV的印象:功能十分的强大,而且支持目前先进的图像处理技术,体系十分完善,操作手册很详细,手册首先给大家补计算机视觉的知识,几乎涵盖了近10 论坛
安卓调用Opencv库的步骤和注意点
05-27 阅读数 5043
吐槽最近这周帮一个大四的学长弄他的毕业设计,他的课题是基于安卓环境下的图片合成问题,本来这个蛮简单的,但是他这个两个图片的合成算法是调用opencv的,,,然后就把我各种煎熬,然后按照网上的各种博客来... 博文 来自: sakurakider的博客
Android 接入 OpenCV库的三种方式
06-14 阅读数 1791
OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows、Android和MacOS操作系统上。它轻量级而且高效——由一系列C函数和少量C++类构成,同时... 博文 来自: 小小情意的博客
服务器上安装Anaconda、tensorflow、opencv吐血总结
10-15 阅读数 5797
1、Anaconda首先安装anaconda。什么是anaconda呢?参考于博客,Anaconda是一个用于科学计算的Python发行版,支持Linux,Mac,Windows系统,提供了包管理与环... 博文 来自: I am what i am
OpenCV库文件介绍 - lmmy的博客 - CSDN博客
6-16
OpenCV模块库简单介绍 - Story51314 - CSDN博客
4-18
【learnOpenCv】Facial Landmark Detection:人脸特征点检测的一些应用
10-26 阅读数 1281
偶然看到的,感觉写的很好,随手大概内容翻译转过来,如有侵权请告知删除。原文链接:https://www.learnopencv.com/facial-landmark-detection/目前在计算机... 博文 来自: I am what i am
opencv各种库的作用
04-27 阅读数 2098
其解释如下:[calib3d]: 其实就是就是Calibration(校准)加3D这两个词的组合缩写。这个模块主要是相机校准和三维重建相关的内容。基本的多视角几何算法,单个立体摄像头标定,物体姿态估计... 博文 来自: 小强博客
OpenCV各个模块介绍
05-10 阅读数 897
对于初学opencv的我来说,最头疼和无法下手的就是,都有什么库,那些库都是干什么的,怎么用,我想很多人应该和我一样,我觉得最重要的就是需要先知道opencv有哪些库,都是干什么的。在我们安装... 博文 来自: qq_35768238的博客
OpenCV常用库函数 - CSDN博客
9-13
opencv的库文件 - havain的博客 - CSDN博客
11-18
OpenCV中Mat的传值、传引用、clone()、copyto()
09-06 阅读数 1万+
1、前提在C++中,函数的参数,传值、传引用、传指针是有区别的,具体如下:#include#includeusingnamespacestd;voidtest1(inta){a=a+1;}voidte... 博文 来自: I am what i am
VS2013+OpenCV开源库使用入门
08-25 阅读数 2889
VS2013+OpenCV3.0.0安装&环境配置(网上很多说使用OPenCV3.2+VS2013的,3.2官方编译库只支持vc14(2015),会存在很多差库的问题)... 博文 来自: _晴少_的专栏
终于弄清楚了opencv的配置原理了
12-27 阅读数 7511
配置步骤设置环境变量即设置【(双击)计算机】->【系统属性】->【高级系统设置】->【高级(标签)】->【环境变量】->path……opencv\build\x86\vc10\bin…….opencv... 博文 来自: wugou2014的博客
opencv需要目录和库
01-03 阅读数 896
每次需要张贴复制,放上来方便一下:D:\学习软件\opencv\build\includeD:\学习软件\opencv\build\include\opencvD:\学习软件\opencv\build... 博文 来自: ture_dream的博客
计算机视觉库OpenCV初步了解
10-10 阅读数 4436
OpenCV全称是OpenSourceComputerVisionLibrary,是一个开放源代码的计算机视觉库。OpenCV最初由英特尔公司发起并开发,以BSD许可证授权发行,可以在商业和研究领域中... 博文 来自: 专注于数据挖掘算法研究和应用
Opencv库组成以及主要文件作用(版本2.4.9)
07-18 阅读数 1274
opencv主要文件夹构成(版本2.4.9)下面对主要文件夹的解释: sources文件夹:其实这个问价夹在安装过程中可以不选择安装,如果空间不足的话,但很重要,包括官方给的事例 ... 博文 来自: 疯狂挖掘机的博客
CV之OpenCV:OpenCV库涉及概念、常见函数、常用案例、HALCON软件简介之详细攻略
04-03 阅读数 8166
CV之OpenCV:OpenCV库涉及概念、常见函数、常用案例、HALCON软件简介之详细攻略目录CV入门OpenCV使用过程1、基本教程OpenCV的相关概念1、基本概念OpenCV一些常用函数Op... 博文 来自: 一个处女座的程序猿
静态opencv需要导入的lib
10-29 阅读数 469
#include<opencv2/imgproc.hpp>#include<opencv2/highgui.hpp>#include&l... 博文 来自: mrljw的博客
OpenCV学习笔记(一)——OpenCV3.1.0+VS2015开发环境配置
04-18 阅读数 2万+
摘要: 由于最近AR(增强现实)这个概念非常火爆,各种基于AR的应用及游戏逐渐面向大众,而在AR中最重要的两个技术就是跟踪识别和增强渲染,其中跟踪识别是通过OpenCV这个开源的计算机视觉库来实... 博文 来自: linshuhe1的专栏
Opencv中常用库文件名称
06-16 阅读数 1431
opencv_calib3d248.libopencv_calib3d248d.libopencv_contrib248.libopencv_contrib248d.libopencv_core248... 博文 来自: tkp2014的专栏
OpenCV库的使用
09-24 阅读数 848
OpenCV中文网站http://wiki.opencv.org.cn/ OpenCV的下载(请下载2.4以后的版本):http://pan.baidu.com/s/1bnkYMjt VS2010下,... 博文 来自: 8rfuz的博客
Opencv的附加库
12-04 阅读数 5618
由于opencv2.4.6的静态库有些单个文件特别大,不能上传到服务器上,所以只能放在本地。为了方便,需要对所有vs的工程建立opencv的include路径和lib路径。相关的附件库有:(注意,op... 博文 来自: carpinter的专栏
openCV开源库-简介
12-03 阅读数 2736
介绍OpenCV(OpenSourceComputerVisionLibrary:http://opencv.org)是一个开源BSD库,该库包括数百个机器视觉算法。该手册基于OpenCV2.XAPI... 博文 来自: shichaog的专栏
(一)OpenCV(开源计算机视觉库介绍)
11-08 阅读数 1万+
OpenCV(开源计算机视觉库介绍)OpenCV是一个用于图像处理、分析、机器视觉方面的开源函数库. 无论你是做科学研究,还是商业应用,opencv都可以作为你理想的工具库,因为,对于这两者,它完全是... 博文 来自: liulina603的专栏
opencv各版本链接及opencv_contrib库各版本链接
08-20 阅读数 3758
contrib库:https://github.com/opencv/opencv_contrib/releasesopencv版本:https://opencv.org/releases.html... 博文 来自: jiao_mrswang的博客
opencv的库文件
02-21 阅读数 284
使用opencv的fast特征时,发现还有其他的提取特征的方式,通过阅读opencv的库文件代码,对这些方式进行梳理。参考:opencv提供了多少个特征点的descriptor?[https://ww... 博文 来自: havain的博客
opencv 三种算法
09-22 阅读数 8685
不断维护的地址:http://plzcoding.com/face-recognition-with-opencv/怎样使用OpenCV进行人脸识别 本文大部分来自OpenCV官网上的F... 博文 来自: u010510100的博客
查看linux下的opencv安装库
11-02 阅读数 417
查看linux下的opencv安装库:pkg-configopencv--libs查看linux下的opencv安装版本:pkg-configopencv--modversion查看linux下的op... 博文 来自: Willen_的博客
OpenCV - 编译静态OpenCV库(静态库)
07-05 阅读数 3254
在一个项目中需要用到OpenCV,刚开始使用了OpenCV的动态链接库,这样,在移动可执行程序时还必须将OpenCV动态支持库一起搬移,很是麻烦。所以,最终选择OpenCV静态链接库,这样程序移植运行... 博文 来自: maweifei的博客
给帮忙看看,opencv扩展库在Cmake之后在VS中 重新生成解决方案报错
11-14
这些错误怎么解决,弄了好长时间了,每次都卡在哪里,内心真的已经奔溃,哪位大神搭救一下。 论坛
vs中关于opencv附加依赖项lib文件添加的疑问
05-28
各位前辈 小弟刚接触vs 很多内容不熟悉 今天设置opencv附加依赖项的时候 发现只能手动输入lib文件 不能把所有文件一次性输入 想请教一下有什么快速的方法吗 毕竟所有的lib文件有好多 论坛
Opencv库
01-18 阅读数 80
回想起来C++是我大一学的东西了后来再也没用过现在因为公司没人写框架只能自己动手对c++操作一脸懵逼c++中opencv总是出问题库文件也缺少无意找到了一个貌似很全的库存一下地址https://git... 博文 来自: 文科生的算法坑
没有更多推荐了,返回首页