自动识别OpenCV版本并添加依赖库
来源:互联网 发布:linux中grep命令详解 编辑:程序博客网 时间:2024/05/17 03:20
这里给大家介绍一种在头文件中自动判断识别OpenCV的版本号,并据此添加对应的依赖库(.lib文件)的方法。具体代码如下:
#ifndef _PREDEP_H_
#define _PREDEP_H_
#pragma once
#include "targetver.h"
#include <stdio.h>
#include <tchar.h>
#include <iostream>
#include "opencv2/core/version.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/calib3d/calib3d.hpp"
#define CV_VERSION_ID CVAUX_STR(CV_MAJOR_VERSION) CVAUX_STR(CV_MINOR_VERSION) CVAUX_STR(CV_SUBMINOR_VERSION)
#ifdef _DEBUG
#define cvLIB(name) "opencv_" name CV_VERSION_ID "d"
#else
#define cvLIB(name) "opencv_" name CV_VERSION_ID
#endif
#pragma comment( lib, cvLIB("core") )
#pragma comment( lib, cvLIB("imgproc") )
#pragma comment( lib, cvLIB("highgui") )
#pragma comment( lib, cvLIB("flann") )
#pragma comment( lib, cvLIB("features2d") )
#pragma comment( lib, cvLIB("calib3d") )
#endif
这里首先是通过OpenCV的version.hpp文件获取版本号,然后将CV_MAJOR_VERSION、CV_MINOR_VERSION、CV_SUBMINOR_VERSION三个版本号数字串接成一个字符串CV_VERSION_ID。然后,根据OpenCV的lib文件的命名规则和当前的编译环境(debug或release)来定义一个命名lib文件的宏 cvLIB。最后,通过#pragma comment ( lib, * ) 指令来添加所需的依赖库。
上面这种方法的便捷性在于,我们只需要指定依赖库的名称,通过所定义的宏就可以自动生成和添加与你所安装的OpenCV版本相对应的依赖库;并且将来升级OpenCV时,除非新版本的依赖库命名规则发生改变,否则就不需要再改动代码,程序会自动判断OpenCV的版本并找到对应的依赖库。
P.S.:另外,建议在系统环境变量中设置一个专门的项来存储OpenCV的安装路径,比如命名为 OPENCVDIR,然后在Visual Studio的项目属性VC++目录中设置include目录和library目录为 $(OPENCVDIR)/include和$(OPENCVDIR)/lib。这样以后升级OpenCV时,只需在系统环境变量中修改OPENCVDIR的路径,就不需要修改项目代码和编译器设置了。
- 自动识别OpenCV版本并添加依赖库
- 自动识别OpenCV版本并添加依赖库
- 自动识别OpenCV版本并添加依赖库
- OpenCV学习笔记--自动识别OpenCV版本并添加依赖库
- OpenCV学习笔记(26)自动识别OpenCV版本并添加依赖库
- OpenCV学习笔记(26)自动识别OpenCV版本并添加依赖库
- 自动识别内容中的Url并添加超链接
- 为opencv添加附加依赖库
- 自动识别OpenCV各版本的万能头文件
- VC6.0 自动识别可用串口 添加至combox 并打开
- VC6.0 自动识别可用串口 添加至combox 并打开
- Android - 添加Android的OpenCV依赖库(Android Dependencies) 问题
- 关于 QWidget+Qml程序打包到ubuntu时,程序与系统库版本不同,编译时添加并依赖自带库 的方法
- cv_bridge依赖opencv版本的问题
- OpenCV依赖文件路径自动添加方法
- OPENCV配置依赖库
- OpenCV 2.4.8版本中添加的库名称
- pom.xml添加spring依赖,统一管理版本
- svn命令详解
- 深入详解Struts2——异常处理
- Linux集群系统包括集群节点
- HTML2--表格,框架,表单,多媒体,标签动态
- TCP协议三次握手过程分析
- 自动识别OpenCV版本并添加依赖库
- Java设计模式----组合模式(Composit )
- SSL工作原理
- Java编程思想第四版读书笔记——第十章 内部类
- Android内存优化(3)-Android系统堆内存限制浅析
- TortoiseSVN使用说明
- python 入门笔记(一)
- 数据库外键说明
- Android 实现图片轮播的三种方法