问题出现背景:

由于课题需要用到SURF detector, 我依照网上的一下教程,把opencv-contrib的配置了一遍。但是,当我写了一个小demo来测试模块是否能正常使用的时候,程序能正常编译,但是无法调用SURF模块,其中error信息如下图:

error的大致意思是,SURF这个算法现在要收费了,建议我们在cmake的时候设置 OPENCV_ENABLE_NONFREE这个选项,然后再rebuild这个cmake后的导出项目。

如何解决问题?

一开始,我第一个想法就是百度一下这个问题,希望能快速解决这个问题,但是只找到了一篇帖子,地址:https://blog.csdn.net/zhoukehu_CSDN/article/details/83145026

该文提出的解决方案是:在cmake中设置OPENCV_ENABLE_NONFREE,再修改SURF.cpp(在opencv-contrb文件夹中)中的条件编译。但是经过尝试之后,我发现这个方法并不可行,同样会出现上图的error。方案一宣告失败。于是我琢磨,按照error的提示,应该能解决问题才对,肯定是哪里出了问题。于是我又捋一了一遍配置的过程。忽然发现其中一个步骤一直是我忽略的:

  在camke过后,我们会rebulild一下导出项目(opencv.sln)。然后把相关项目的dll (D:\opencv3.4\new-build2\install\x64\vc15\bin)文件复制到C:/windows/system32中,system32这个文件夹实际起了一种备胎的作用,当VS不能依照项目配置找到dll文件时,就会在这个文件夹里面找。我的问题就在于,我在后面camake重新配置的过程中,没有把新的dll转移到system32这个文件夹。所以vs读取的,一直都是旧的dll(没有设置OPENCV_ENABLE_NONFREE)。

   归纳一下结果方法:

    1.重新cmake opencv,opencv-contrib,在配置OPENCV_EXTRA_MODULES_PATH的过程中也要勾上OPENCV_ENABLE_NONFREE

    2.重新生成导出项目(opencv.sln)的解决方案,并把新dll文件复制到C:/windows/system32中。

最后推荐两篇配置opencv_contrib的文章:

https://blog.csdn.net/qq_23335979/article/details/82115401

https://www.cnblogs.com/jliangqiu2016/p/5597501.html

关于win7+VS2017环境下的opencv-contirb配置的一个坑的更多相关文章

  1. qt5.11.2+vs2017环境下opencv3.4.1编译配置

    OpenCV是一个开源的计算机库,它可以帮助视觉工作者做很多富有创造性的工作,在图像处理领域扮演着重要的角色.由于opencv3.x的存在,不管你是学生还是研究人员,是专家还是初学者,都可以快速的建立 ...

  2. 关于python环境下的opencv安装

    吐槽: 这一天我终于记起了这个博客.今天搞python环境下的opencv,又弄了一天,很烦躁.之前配置VS的opencv也是花了好久的时间,然后突然发现之前记录在电脑上的文档都找不到了,于是决定还是 ...

  3. win7 IIS7环境下部署PHP 7.0

    最近在本机电脑win7 II7环境下部署PHP 7.0遇到一些问题,将之记录下来 简要步骤如下: 1.到php官网下载php,由于是IIS环境要下载非线程安全的版本,我下载的是7.0.13 2.解压到 ...

  4. 联想电脑win7旗舰版环境下的如何成功配置AppServ

    联想电脑win7旗舰版环境下的如何成功配置AppServ 毕业设计中需要用Mysql数据库,并且想找一个方便Mysql数据库编程的开发工具,百度搜索了一下,AppServ集成环境安装包能快速搭建环境. ...

  5. java 在centos6.5+eclipse环境下调用opencv实现sift算法

    java 在centos6.5+eclipse环境下调用opencv实现sift算法,代码如下: import org.opencv.core.Core; import org.opencv.core ...

  6. Anaconda3环境下安装OpenCV(cv2)

    Anaconda3环境下安装OpenCV(cv2) 主要步骤 1 首先查看自己的Anaconda安装的python版本 2 下载相应的OpenCv.whl文件 3 使用cmd安装.whl文件 查看自己 ...

  7. libCURL开源库在VS2010环境下编译安装,配置详解

    libCURL开源库在VS2010环境下编译安装,配置详解 转自:http://my.oschina.net/u/1420791/blog/198247 http://blog.csdn.net/su ...

  8. 实验七:Xen环境下cirrOS的安装配置

    实验名称: Xen环境下cirrOS的安装配置 实验环境: 这里的cirrOS和实验六中的busybox的启动方式相同,唯一的区别就是我们使用的cirrOS镜像中,已经包含了根文件系统.内核文件以及r ...

  9. 【转】mysql8.0 在window环境下的部署与配置

    [转]mysql8.0 在window环境下的部署与配置 今天在阿里云window服务器上配置mysql环境,踩了一些坑,分享出来.需要的朋友可以看看.额,或许有人要吐槽我为什么不在linux上去配置 ...

随机推荐

  1. shell read的用法

    1. Read的一些选项 Read可以带有-a, -d, -e, -n, -p, -r, -t, 和 -s八个选项. -a :将内容读入到数值中 echo -n "Input muliple ...

  2. ViewPagerWithImageDemo【ViewPager如何判断滑动到第一页和最后一页以及弹出对话框功能】

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 记录viewpager滑动的时候弹出对话框的功能(关键功能是滑动弹出对话框后,隐藏对话框的时候当前页可以还原到原位置),顺便判断首页 ...

  3. eclipse升级Android SDK Tool版本到25.2.5后运行项目报错Unable to build: the file dx.jar was not loaded from the SDK folder

    概述 由于最近通过SDK-Manager更新了build-tools,当要用到dx.jar这个包时,自动调用最新版本Android SDK build-tools中dx.jar,但是运行android ...

  4. 什么是Servlet(原理,从访问到方法)

    Servlet简介 Servlet是SUN公司提供的一门用于开发动态WEB资源的技术.SUN公司在其API中提供了一个Servlet接口,用户若想开发一个动态WEB资源(即开发一个Java程序向浏览器 ...

  5. 如何在linux下使用git管理上传代码&误删文件修复

    首先需要安装git,sudo apt-get install git,这时就可以下载代码了. 然后先在gituhub上新建一个仓库,然后先在本地建一个git目录,git init 然后再配置用户名和邮 ...

  6. 【转载】java final 关键字的几种用法

    原文链接点这里,感谢博主分享 在java的关键字中,static和final是两个我们必须掌握的关键字.不同于其他关键字,他们都有多种用法,而且在一定环境下使用,可以提高程序的运行性能,优化程序的结构 ...

  7. MySQL集群架构:MHA+MySQL-PROXY+LVS实现MySQL集群架构高可用/高性能-技术流ken

    MHA简介 MHA可以自动化实现主服务器故障转移,这样就可以快速将从服务器晋级为主服务器(通常在10-30s),而不影响复制的一致性,不需要花钱买更多的新服务器,不会有性能损耗,容易安装,不必更改现有 ...

  8. 点击菜单选项,右侧主体区新增子界面(Tab)的实现

    今天是2019年小年后一天,还有三天回家过年. 今天记录一下一种前端页面的效果的实现,这种效果很常见,一般用于网站后台系统的前端页面.一般后台系统会分为顶部导航栏,左边的菜单栏和右边的主体区.有一种效 ...

  9. 现代Java进阶之路必备技能——2019 版

    Java技术的学习阶段有三 第1个是java基础,比如对集合类,并发,IO,JVM,内存模型,泛型,异常,反射,等有深入了解. 第2个是全面的互联网技术相关知识,比如redis,mogodb,ngin ...

  10. iframe 父页面调用子页面的vue方法

                    父页面代码:            html: <div id="app"> //省略业务代码x行..... <iframe sr ...