关于win7+VS2017环境下的opencv-contirb配置的一个坑
问题出现背景:
由于课题需要用到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配置的一个坑的更多相关文章
- qt5.11.2+vs2017环境下opencv3.4.1编译配置
OpenCV是一个开源的计算机库,它可以帮助视觉工作者做很多富有创造性的工作,在图像处理领域扮演着重要的角色.由于opencv3.x的存在,不管你是学生还是研究人员,是专家还是初学者,都可以快速的建立 ...
- 关于python环境下的opencv安装
吐槽: 这一天我终于记起了这个博客.今天搞python环境下的opencv,又弄了一天,很烦躁.之前配置VS的opencv也是花了好久的时间,然后突然发现之前记录在电脑上的文档都找不到了,于是决定还是 ...
- win7 IIS7环境下部署PHP 7.0
最近在本机电脑win7 II7环境下部署PHP 7.0遇到一些问题,将之记录下来 简要步骤如下: 1.到php官网下载php,由于是IIS环境要下载非线程安全的版本,我下载的是7.0.13 2.解压到 ...
- 联想电脑win7旗舰版环境下的如何成功配置AppServ
联想电脑win7旗舰版环境下的如何成功配置AppServ 毕业设计中需要用Mysql数据库,并且想找一个方便Mysql数据库编程的开发工具,百度搜索了一下,AppServ集成环境安装包能快速搭建环境. ...
- java 在centos6.5+eclipse环境下调用opencv实现sift算法
java 在centos6.5+eclipse环境下调用opencv实现sift算法,代码如下: import org.opencv.core.Core; import org.opencv.core ...
- Anaconda3环境下安装OpenCV(cv2)
Anaconda3环境下安装OpenCV(cv2) 主要步骤 1 首先查看自己的Anaconda安装的python版本 2 下载相应的OpenCv.whl文件 3 使用cmd安装.whl文件 查看自己 ...
- libCURL开源库在VS2010环境下编译安装,配置详解
libCURL开源库在VS2010环境下编译安装,配置详解 转自:http://my.oschina.net/u/1420791/blog/198247 http://blog.csdn.net/su ...
- 实验七:Xen环境下cirrOS的安装配置
实验名称: Xen环境下cirrOS的安装配置 实验环境: 这里的cirrOS和实验六中的busybox的启动方式相同,唯一的区别就是我们使用的cirrOS镜像中,已经包含了根文件系统.内核文件以及r ...
- 【转】mysql8.0 在window环境下的部署与配置
[转]mysql8.0 在window环境下的部署与配置 今天在阿里云window服务器上配置mysql环境,踩了一些坑,分享出来.需要的朋友可以看看.额,或许有人要吐槽我为什么不在linux上去配置 ...
随机推荐
- 第4章 简单的C程序设计——选择结构程序设计
在顺序结构中,各语句是按自上而下的顺序执行的,执行完上一个语句就自动执行下一个语句,是无条件的,不必作任何判断.实际上,很多情况下,需要根据某个条件是否满足来决定是否执行指定的操作任务,或者从给定的两 ...
- Python基础(reduce,filter,map函数)
map函数: map函数特点:对可迭代对象中的每个元素进行相同的操作(例如每个元素+1等等) #————————————————map函数———————————————————— #对列表的各个元素实 ...
- 轻量级数据库Sqlite的使用
SqLite是什么? SQLite是一个进程内的库,实现了自给自足的.无服务器的.零配置的.事务性的 SQL 数据库引擎.它是一个零配置的数据库,这意味着与其他数据库一样,您不需要在系统中配置. 就像 ...
- Vue2.0源码阅读笔记(二):响应式原理
Vue是数据驱动的框架,在修改数据时,视图会进行更新.数据响应式系统使得状态管理变的简单直接,在开发过程中减少与DOM元素的接触.而深入学习其中的原理十分有必要,能够回避一些常见的问题,使开发变的 ...
- 【Java】留下没有基础眼泪的面试题
前言 只有光头才能变强 本文力求简单讲清每个知识点,希望大家看完能有所收获 一.如何减少线程上下文切换 使用多线程时,不是多线程能提升程序的执行速度,使用多线程是为了更好地利用CPU资源! 程序在执行 ...
- 详解mybatis配置文件
在前面两篇文章中,大致与大家分享了基于Java的ORM框架,Mybatis基本架构和Mybatis实现CRUD的基本原理与流程,在本篇文章中,继续与大家分享Mybatis配置文件. 通过研究Mybat ...
- Perl多线程(1):解释器线程的特性
线程简介 线程(thread)是轻量级进程,和进程一样,都能独立.并行运行,也由父线程创建,并由父线程所拥有,线程也有线程ID作为线程的唯一标识符,也需要等待线程执行完毕后收集它们的退出状态(比如使用 ...
- [JavaScript] 函数节流(throttle)和函数防抖(debounce)
js 的函数节流(throttle)和函数防抖(debounce)概述 函数防抖(debounce) 一个事件频繁触发,但是我们不想让他触发的这么频繁,于是我们就设置一个定时器让这个事件在 xxx 秒 ...
- (摘)C#生成随机数的三种方法
随机数的定义为:产生的所有数字毫无关系. 在实际应用中很多地方会用到随机数,比如需要生成唯一的订单号. 在C#中获取随机数有三种方法: 一.Random 类 Random类默认的无参构造函数可以根据当 ...
- 在java中如何实现字符串的反转
如 "abcdt" 反转之后是 "tdcba" 思路1: 运用递归的方法进行反转 假设反转方法为 reverseString(String str)1)当字符串 ...