win7 重编译OpenCV3.3.0+opencv_contrib

本文介绍如何解决在OpenCV 3.3版本中SURF和SIFT算法缺失的问题,通过重新编译OpenCV并整合opencv_contrib模块,实现对这两个算法的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

      在学习计算机视觉的特征点检测时,用到SURF和SIFT算法,遇到如下错误

Severity    Code    Description    Project    File    Line    Suppression State Error (active)        identifier "SurfFeatureDetector" is undefined    
 

     上网查找原因为opencv3.3版本中不存在SURF和SIFT算法相关的函数,因为他们是存放在opencv_contrib目录下面的未稳定功能模块,所以如果我们想要使用这个目录的功能,就需要自己重新进行OpenCV的编译。步骤如下:

      (一)准备工作

      (1)下载opencv,地址https://opencv.org/releases.html,下载后安装(也就是解压)

解压的结果为(其中newbuild为自己新建的文件夹,为了放后面新编译的opencv)

(2)下载opencv_contrib,地址https://download.youkuaiyun.com/download/panpan_jiang1/10708179,解压后为

(3)下载Cmake工具

地址为https://cmake.org/download/

解压即可使用

(二)使用cmake生成OpenCV.sln

(1)打开cmake-gui\bin目录下的cmake-gui.exe工具:

(2)填写相应参数,包括:OpenCV源码目录和OpenCV.sln工程的存放目录

1.  点击右侧“Browse Source”按钮输入OpenCV源码所在路径

2. 点击右侧“Browse  Build”输入生成的OpenCV工程存放目录

3. 点击左下角“Configure”按钮生成工程:

4. 第一次导出时需要设置后面用来编译此OpenCV.sln工程的VS的版本,这里我用的是VS 2015:

5.第一次编译完成之后,我们需要将额外的opencv_contrib加到工程中进行第二次编译,在配置表中找到“OPENCV_EXTRA_MODULES_PATH”,设置其参数值为open_contrib源码包中的modles目录:

6.设置完成之后点击Configure进行配置,不报错的话就进行第二次编译,第二次编译一般很快就能完成,然后点击Generate生成

7. 编译完成后,我们在资源管理器下查看上面设置的文件输出目录,发现目录下多出了很多文件,包括OpenCV.sln工程文件:

(三)用VS打开OpenCV.sln工程,编译生成Debug和Release库

(1)用VS 2015打开OpenCV.sln工程,在解决方案中可以查看工程目录:

(2)编译生成debug版本的库,记得在此之前要选择编译的平台信息,这就是编译生成debug版本和release版本的区别:

(3) 在解决方案中选中工程,右键选择Rebuild Solution:

(4)找到CMakeTargets中的INSTALL,然后右键选择“Project Only”-->“Build Only INSTALL”:

(四)把新的库文件配置到到项目中

(1)新建一个Win32项目,添加新的C++文件如图所示双击Microsoft.CPpp.x64.user进入配置界面

(2)VC++Directories-->Include Directories,添加:(新的lnclude在工程目录下的install目录中)

(2)VC++Directories-->Library Directories,添加:

(3)Linker-->Input-->Additional Dependencies,添加: 

opencv_bioinspired330d.lib
opencv_bgsegm330d.lib
opencv_aruco330d.lib
opencv_calib3d330d.lib
opencv_ccalib330d.lib

opencv_core330d.lib
opencv_datasets330d.lib

opencv_dnn330d.lib

opencv_dpm330d.lib
opencv_face330d.lib
opencv_features2d330d.lib
opencv_flann330d.lib
opencv_fuzzy330d.lib
opencv_hdf330d.lib
opencv_highgui330d.lib
opencv_img_hash330d.lib

opencv_imgcodecs330d.lib
opencv_imgproc330d.lib
opencv_line_descriptor330d.lib

opencv_ml330d.lib
opencv_objdetect330d.lib
opencv_optflow330d.lib

opencv_phase_unwrapping330d.lib
opencv_photo330d.lib
opencv_plot330d.lib
opencv_reg330d.lib
opencv_rgbd330d.lib
opencv_saliency330d.lib
opencv_shape330d.lib
opencv_stereo330d.lib

opencv_stitching330d.lib
opencv_structured_light330d.lib

opencv_superres330d.lib
opencv_surface_matching330d.lib

opencv_text330d.lib
opencv_tracking330d.lib
opencv_video330d.lib
opencv_videoio330d.lib
opencv_videostab330d.lib
opencv_xfeatures2d330d.lib
opencv_ximgproc330d.lib
opencv_xobjdetect330d.lib
opencv_xphoto330d.lib

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值