本文链接: https://mangoroom.cn/opencv/print-opencv-version-info.html

查看自己安装的opencv的版本信息的方法有两种。

方法一-查看lib文件

到opencv的安装目录。进去lib文件夹,查看opencv的lib文件名称,文件名称中含有的数字便是opencv的版本信息。例如

opencv_calib3d411d.lib
opencv_core411d.lib
opencv_dnn411d.lib
opencv_features2d411d.lib
opencv_flann411d.lib
opencv_gapi411d.lib
opencv_highgui411d.lib
opencv_imgcodecs411d.lib
opencv_imgproc411d.lib
opencv_ml411d.lib
opencv_objdetect411d.lib
opencv_photo411d.lib
opencv_stitching411d.lib
opencv_video411d.lib
opencv_videoio411d.lib

以上的opencv版本就是opencv4.1.1,版本号接着的字母d是debug的意思,表示这是debug版的opencv.

方法二-代码输出

除了方法一查看lib文件的方法,还可以以代码输出的方式。输出的代码如下:

#include<iostream>
#include<opencv2/opencv.hpp> int main()
{
std::cout << "OpenCV version : " << CV_VERSION << std::endl;
std::cout << "Major version : " << CV_MAJOR_VERSION << std::endl;
std::cout << "Minor version : " << CV_MINOR_VERSION << std::endl;
std::cout << "Subminor version : " << CV_SUBMINOR_VERSION << std::endl; system("pause");
return 0;
}

运行后,芒果测试的输出结果为:

OpenCV version : 4.1.1-pre
Major version : 4
Minor version : 1
Subminor version : 1
Press any key to continue . . .

可以看到,以上的信息。芒果使用的opencv是opencv-4.1.1预览版的(芒果自编译),主要版本4,次要版本为1,次要子版本为1。


打印版本信息的代码非常简单,只需要输出定义的版本的几个宏,芒果顺便查阅了官方文档,几个宏的定义如下:

§ CV_MAJOR_VERSION
#define CV_MAJOR_VERSION CV_VERSION_MAJOR
§ CV_MINOR_VERSION
#define CV_MINOR_VERSION CV_VERSION_MINOR
§ CV_SUBMINOR_VERSION
#define CV_SUBMINOR_VERSION CV_VERSION_REVISION
§ CV_VERSION
#define CV_VERSION CVAUX_STR(CV_VERSION_MAJOR) "." CVAUX_STR(CV_VERSION_MINOR) "." CVAUX_STR(CV_VERSION_REVISION) CV_VERSION_STATUS

可以看到,与版本信息相关的几个宏定义都有两个以上的值,意味着输出CV_MAJOR_VERSION与CV_VERSION_MAJOR是一样的。

利用版本信息

不同的opencv版本代码使用有所不一样,所以要写出兼容不同版本opencv的代码,这时可以利用opencv的版本信息。

if ( CV_MAJOR_VERSION >= 4)
{
// opencv4.x版本代码
} else if(CV_MAJOR_VERSION >= 3)
{
// opencv3.x版本代码
}else
{
// opencv2.x版本代码
}

尾巴

网上很多人喜欢用imshow函数来验证opencv是否安装和配置成功,其实输出版本信息也是一个非常简单的方法。


本文由芒果浩明发布,转载请注明来源。

本文链接:https://mangoroom.cn/opencv/print-opencv-version-info.html

打印输出opencv的版本信息的更多相关文章

  1. Opencv各个版本的万能头文件

    每次下载opencv的新版本时,都需要重新写头文件,更改链接库配置,很麻烦有木有?下面这个头文件是我在别人的代码中淘出来的,很不错,与大家分享~(具体作者忘记了,不好意思啊) 作者很巧妙地利用Open ...

  2. Linux下如何查看版本信息

    Linux下如何查看版本信息, 包括位数.版本信息以及CPU内核信息.CPU具体型号等等,整个CPU信息一目了然.   1.# uname -a   (Linux查看版本当前操作系统内核信息)   L ...

  3. 获得appstore里面app的最新的版本信息,进行版本更新

    版本更新有两种方式 一种是从服务器获得最新的版本信息和当前app的版本进行比较 另外一种是获得appStore上最新的版本信息和当前的app的版本进行比较 现在我来说一下如何通过appStore获得最 ...

  4. 查看Linux版本信息

    如何查看Linux系统使用的版本信息呢? 下面这篇文章收集.整理了一些常见的查看Linux系统版本的方法.由于手头只有Oracle Linux.Centos Linux.Redhat Linux三个版 ...

  5. Android APP 读取 AndroidManifest.xml 中的版本信息详解

    APP都会涉及到版本的问题,Android APP的版本信息保存在AndroidManifest.xml文件的顶部.如下图: 有2个属性表示,“android:versionCode”和“androi ...

  6. javascript判断手机浏览器版本信息

    <script type="text/javascript"> /* * 智能机浏览器版本信息: * */ var browser={ versions:functio ...

  7. C#,C++修改vs文件模板,添加自定义代码版权版本信息

    简单型的修改类似该路径下的模板文件即可(vs版本或安装路径不同路径可能不同) C#: 模板参数参考https://msdn.microsoft.com/zh-cn/library/eehb4faa.a ...

  8. iOS 获取应用版本信息

    现在许多接口都需要上传应用版本信息,所以呢,这个是必不可少的,可以在进入应用的时候先获取到,然后存在单例中,用的时候直接调用单例就好了,记住这些字符串 NSString *executableFile ...

  9. 查看已安装的CentOS版本信息:

    如何查看已安装的CentOS版本信息: 1)[root@localhost ~]# cat /proc/version Linux version 2.6.18-194.el5 (mockbuild@ ...

随机推荐

  1. iptables中DNAT和SNAT转发的配置方法

    1.一对一流量完全DNAT 首先说一下网络环境,普通主机一台做防火墙用,网卡两块 eth0 192.168.0.1  内网 eth1 202.202.202.1 外网 内网中一台主机 192.168. ...

  2. python之timeit模块

    timeit模块: timeit 模块定义了接受两个参数的 Timer 类.两个参数都是字符串. 第一个参数是你要计时的语句或者函数. 传递给 Timer 的第二个参数是为第一个参数语句构建环境的导入 ...

  3. netty实现客户端服务端心跳重连

    前言: 公司的加密机调度系统一直使用的是http请求调度的方式去调度,但是会出现网络故障导致某个客户端或者服务端断线的情况,导致很多请求信息以及回执信息丢失的情况,接着我们抛弃了http的方式,改为T ...

  4. 使用VSCODE开发UE4

    完全可行,速度很快,智能提示.代码格式化.查找Symbol等等都不比VS+Visual AssistX 差. 准备 打开编辑器的Editor Preferences>Source Code,选择 ...

  5. WordPress过滤器(Filters):apply_filters和add_filter

    过滤器(Filters)对于WordPress来说是非常重要的,它极大地扩展了WordPress的定制能力,提高了WordPress的灵活性.无论是制作主题还是开发插件,我们基本上都会或多或少地使用到 ...

  6. ZooKeeper java例子解读

    转载链接:https://blog.csdn.net/liyiming2017/article/details/83276706 需求理解我们先回顾一下例子的需求,此客户端有如下四个需求: 1.它接收 ...

  7. jsp里面自定义标签常量详解

    标签中静态常量: EVAL_BODY_INCLUDE:告诉服务器正文的内容,并把这些内容送入输出流 SKIP_BODY:告诉服务器不要处理正文内容 EVAL_PAGE:让服务器继续执行页面 SKIP_ ...

  8. LeetCode----两两交换链表中的节点

    给定一个链表,两两交换其中相邻的节点,并返回交换后的链表. 示例: 给定 1->2->3->4, 你应该返回 2->1->4->3. 说明: 你的算法只能使用常数的 ...

  9. c++ 引用& 与 取地址&

    https://www.csdn.net/gather_2e/NtjaYgzsNTctYmxvZwO0O0OO0O0O.html 还有指针和取值: int& a = b; int *c = & ...

  10. 一些 postman

    听了:https://v.qq.com/x/page/f0816egftuw.html npm 是 node package manager, Nodejs下的包管理器.安装完 nodejs 后(no ...