使用高版本OpenCV时应该注意的问题

使用OpenCV时,经常涉及到一些版本迁移的问题,而在版本迁移的过程中经常会遇到一些莫名奇妙的bug,比如在使用低版本的OpenCV

Ptr<FeatureDetector> detector = FeatureDetector::create( "SIFT" );
    Ptr<DescriptorExtractor> descriptorExtractor = DescriptorExtractor::create( "SIFT" );
    Ptr<DescriptorMatcher> descriptorMatcher = DescriptorMatcher::create( "BruteForce" );
    if( detector.empty() || descriptorExtractor.empty() || descriptorMatcher.empty()  )
    {
        cout << "Can not create detector or descriptor exstractor or descriptor matcher of given types" << endl;
        return -1;
    }

进行图像匹配时,会出现检测子为空的情况

查阅OpenCV API reference

可见在高版本的OpenCV中,图像匹配算法迁移到了nonfree模块中,此时要添加initModule_nonfree();函数才可以。

时间: 2024-08-06 07:56:17

使用高版本OpenCV时应该注意的问题的相关文章

低版本GCC程序向高版本移植的兼容性问题

将低版本gcc编译过的程序移植到高版本GCC时, 可能会出现一些兼容性问题. 原因是, 为了适应新的标准,一些旧的语法规则被废弃了. 关于这方面的一些具体资料可从该处查询. 这里只是自己遇到的其中一个问题. 错误提示: In instantiation of ‘int t(T) [with T = int]’ required from here error: ‘f’ was not declared in this scope, and no declarations were found b

高版本-&gt;低版本迁移,低版本客户端连接高版本数据库EXP导出报错EXP-00008,ORA-01455,EXP-00000

生产环境: 源数据库:RHEL + Oracle 11.2.0.3 目标数据库:HP-UX + Oracle 10.2.0.4 需求:迁移部分表  11.2.0.3-->10.2.0.4,若迁移范围内的有些表在目标库已经存在,则替换. 本次迁移数据量<1G. 初定方案:低版本的客户端连接到高版本数据库,用低版本导出,低版本导入. 1.采用初定方案,目标数据库所在服务器连接到源数据库,exp导出过程中报错. ZJCRNOPDB 36: sqlplus -version SQL*Plus: Rel

转 - Android Studio 低版本Gradle升级到高版本时常见问题

来自: http://blog.csdn.net/feiniao8651/article/details/44652753 今天拿到一个用低版本Gradle的编译的Android工程,gradle对版本的向下兼容做的不太好,因此在高版本Gradle的电脑上会出很多问题. 1. Error:The project is using an unsupported version of the Android Gradle plug-in (0.12.2). The recommended versi

转发:maven打包时始终出现以下提示:-source 1.3 中不支持泛型(请使用 -source 5 或更高版本以启用泛型)

maven打包时始终出现以下提示: 1.-source 1.3 中不支持泛型(请使用 -source 5 或更高版本以启用泛型)List<User> userList= new ArrayList<User>(); 2.-source 1.3 中不支持注释(请使用 -source 5 或更高版本以启用注释)@WebService(endpointInterface = "com.webservice.service.LoadService") 而用命令mvn -

仅当使用 Microsoft .NET Framework 4 或更高版本时,才支持对 x64 进程进行混合模式调试

低于 4 的 .NET Framework 版本不支持对 x64 进程进行混合模式调试. 这意味着,当您进行调试时,无法从托管代码单步执行到本机代码,也无法从本机代码单步执行到托管代码. 问题解决 更新项目,使其使用 Microsoft .NET Framework 4 或更高版本. - 或 - 在单独的调试会话中调试托管代码和本机代码. - 或 - 作为 32 位进程调试混合代码,如下面的过程所述. 将平台更改为 32 位(Visual Basic 或 C#) 在"解决方案资源管理器"

SpringBoot高版本修改为低版本时测试类报错解决

有时在使用idea通过Spring Initailizr创建项目时,默认只能创建最近的版本的SpringBoot项目. 这是如果想要换成版本,就可以在项目创建好了之后,在pom文件中直接将版本修改过来. 如下所示 比如在创建项目时默认的版本为2.2.2版本: <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artif

Android 开源项目android-open-project工具库解析之(二) 高版本向低版本兼容,多媒体相关,事件总线(订阅者模式),传感器,安全,插件化,文件

六.Android 高版本向低版本兼容 ActionBarSherlock 为Android所有版本提供统一的ActionBar,解决4.0以下ActionBar的适配问题 项目地址:https://github.com/JakeWharton/ActionBarSherlock Demo地址:https://play.google.com/store/apps/details?id=com.actionbarsherlock.sample.demos APP示例:太多了..现在连google都

从Windows 10家庭版升级到更高版本

从Windows 10家庭版升级到更高版本 在Windows 7.Windows 8及Windows 8.1中,Windows的企业版与其他版本(家庭版.专业版)是不同的安装镜像,而且也不能从家庭版或专业版升级到企业版.而在Windows 10中,其基础版本(家庭版.专业版.教育版.专业版),从本质上来说,是用的相同的安装镜像,所以可以从低版本(家庭版.专业版)升级到企业版或教育版. 在7月29号,MSDN订阅用户可以下载到企业版.专业版与家庭版的ISO镜像,此时人们下载不到教育版的镜像(开始能

[原]高版本gcc编译哟优化可能导致问题

系统:ubuntu14.04 编译器:gcc4.8.2 问题描述:工作需要,使用libnids,所以就下了最新版本的1.24,编译安装后,发现tcp报文重组工作无法完成,具体表现为虽然通过nids_register_tcp函数注册了回调函数,但函数一直不能被执行,通过对libnids执行流程的跟踪,发现在计算checksum的时候出了问题,checksum的值一直不为零,导致libnids认为数据报损坏. 不明所以,但通过思考,觉得问题应该处在编译器上,是不是64位和32为的问题呢?源码中并没有