首相声明,本文章借鉴了其他文章,会给与文章链接。
Opencv1.0版本于2006年面世,主要基于C语言。2009年发布opencv2,主要基于C++。此时OpenCV库被划分成多个模块,这些模块被编译成库文件后,位于lib文件夹中。主要有以下模块(版本1的结构见我的这篇blog:http://blog.csdn.net/lu597203933/article/details/13614377):
Opencv_core模块:包含核心功能,尤其是底层数据结构和算法函数。
Opencv_improc模块:包含图像处理函数。
Opencv_highgui模块:包含读写图像及视频的函数,以及操作图形用户界面函数。
Opencv_features2d模块:包含兴趣点检测子,描述子以及兴趣点匹配框架。
Opencv_calib3d模块:包含相机标定,双目几何估计以及立体视觉函数。
Opencv_video模块:包含运动估算,特征跟踪以及前景提取函数与类。
Opencv_objdetect模块:包括物体检测函数,如脸部和行人检测。
库中还包含其它的工具模块,如机器学习(opencv_ml),计算几何(opencv_flann),第三方代码(opencv_contrib)等。这些模块都对有一个单独的头文件(位于include文件夹)。推荐的声明方式如下:
#include
#include
#include
而#include "cv.h"这是旧的代码方式,那是库还没有被划分为模块。
文章链接:https://blog.csdn.net/scutjy2015/article/details/72881361
Opencv2标志着opencv革命性的改变,Opencv2带来了全新的C++接口,将Opencv的能力无限放大。在2.0时代,opencv增加了新的平台支持,包括iOS和Android,通过CUDA和openGL实现了GPU加速,为Python和Java用户提供了接口。
Opencv 3改变了项目架构的方式,3.0版本不会像2.0版本一样激进的尝试,只会有足够稳定的改进。项目架构的改变是Opencv 3最为重大的革新之处。2.0版本是各个模块都是以整体的形式构建然后组合在一起的。然而,随着功能的增加,opencv主体集成了各种各样的功能模块,变得越来越臃肿。而3.0版本就是为了给日益发福的opencv减肥,因为Opencv3决定向其他大项目一样,抛弃整体架构,使用内核+插件的架构形式。
在GitHub中,除了存放着正式版本的opencv的主仓库和新增加的“opencv_extra”仓库以外,opencv3中还添加了一个名为“opencv_contrib”的全新仓库,该仓库包括很多让人兴奋的功能:脸部识别,文本探测,文本识别,新的边缘检测器,充满艺术感的图像修复,深度地图处理,新的光流和追踪算法等。
opencv_contrib仓库是大多数实验性代码放置的地方,一些API可能会有改变,这些额外模块可以在CMake中用OPENCV_EXTRA_MODULES_PATH=/modules传递给CMake文件。
opencv2项目移植到opencv3需要注意的一些细节。由于opencv3的主体部分只是在opencv2的基础上进行小幅度的更改,所以opencv2的大部分程序都可以在opencv3上运行。但有些也会报错。
1【由于宏名称的变更造成的“未声明的标识符”系列问题】
有时候,遇到此类问题加入一句“#include
2【使用vector容器之时提示"error C2065:"vector":未声明的标识符】
在opencv3的环境下未包含STD命名空间,需要在开头加上一句"using namespace std;"就解决了。
3【其他一些细节问题】
features2d.hpp头文件路径更改。将#include
core.hpp头文件路径更改。将#include
表示颜色时,将CV_RGB改为Scaler
定义尺寸时,将cvSize(-1,-1)改为Size(-1,-1)
用format进行格式化输出时,将format(r,"python")改为format(r,Formatter::FMT_PYTHON)
原文转载地址:https://blog.csdn.net/yangxueyangxue/article/details/80776255。
关于opencv,我们从opencv2.x开始说明,因为一代版本使用范围有限,网上基本上都是2.0以上的版本、
VC6.0 vs2005 vs2008其实都需要经过cmake这一个步骤,将opencv编译之后找到相应的库文件,有如下关系:
opencv 2.3 == vc9
opencv 2.4.10 == vc10、vc11、vc12
opencv 2.4.13 == vc11、vc12
opencv 3.4.0 == vc14、vc15
opencv 3.4.1 == vc14、vc15
关于vs版本对应问题可以参考文章:https://blog.csdn.net/ljsant/article/details/75221118。
对应版本说明。在该文件夹下不需要Cmake编译,直接从里面就可以添加相应的库文件,头已经可编译的文件,如果opencv版本下没有对应的VC版本则需要通过如下方法(以vs2005来举例):
可以参考文章:https://blog.csdn.net/blckriver/article/details/81348116。
1、Visual Studio 2005
2、OpenCV-2.4.7
3、cmake-3.4.1-win32-x86 (一般情况下Cmake工具版本要比opencv版本高,理论上可以编译各种版本的opencv 根据项目实际需要来配置。CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。他能够输出各种各样的makefile或者project文件,能测试编译器所支持的C++特性,类似UNIX下的automake。只是 CMake 的组态档取名为 CMakeLists.txt。Cmake 并不直接建构出最终的软件,而是产生标准的建构档(如 Unix 的 Makefile 或 Windows Visual C++ 的 projects/workspaces),然后再依一般的建构方式使用。这使得熟悉某个集成开发环境(IDE)的开发者可以用标准的方式建构他的软件,这种可以使用各平台的原生建构系统的能力是 CMake 和 SCons 等其他类似系统的区别之处。(参考https://baike.baidu.com/item/cmake/7138032?fr=aladdin))。
Cmake官网地址:https://cmake.org/download/。各种版本都有。