平台:win10 x64 +VS 2015专业版 +opencv-2.4.11 + gtk_-bundle_2.24.10_win32

参考博客:https://www.cnblogs.com/cql/archive/2013/05/23/3095749.html

区别:VS2015,opencv2.4.11, gtk_-bundle_2.24.10_win32版本不同,稍有差别

一、OPENSIFT编译运行

区别:Visual Studio 2015专业版的项目中稍作改动并编译通过。

1.1 VS 2015专业版配置VS项目

VS 2015专业版 +opencv-2.4.11下载及安装见我的另一篇博客:https://www.cnblogs.com/Alliswell-WP/p/VS2015_OpenCV.html

那篇博客安装的是opencv-3.4.1-vc14_vc15  ,而本平台需要安装opencv-2.4.11  (那篇博客附有云盘下载链接),安装方法雷同,

注意:添加环境变量哦

首先解压OPENSIFT.zip ->里边有(“说明.txt”—说明了目录下各个文件,“SIFT程序vs”—为VS2012项目版本,对源码进行部分修改注释,“robwhess-opensift-300bad1.zip”—

从http://robwhess.github.io/opensift/下载的OpenSIFT源码)->将“SIFT程序vs”文件夹重命名为“SIFT”,然后拷贝到VS的工程文件夹下(我的是:“D:\Working\VS2015Projects”文件夹下)

->进入SIFT文件夹后用VS2015打开SIFT.vcxproj -> 默认模板解决方案平台选择是:Debug和解决方案配置选择是:Win32,

这时直接点击本地Windows调试器会有一大堆错误,还需要进行下面的配置。

1.2 OpenCV配置

下载链接:https://pan.baidu.com/s/12_DTxM265ZYmg5EBeacjNQ 密码:kbl3
下载后为:opencv-2.4.11.exe

安装:双击该可执行文件后更改路径(我的是:D:\ProgramFiles\opencv2)后点击“Extract”即可完成安装

配置:1.添加环境变量(我的为:D:\ProgramFiles\opencv2\opencv\build\x86\vc12\bin)

注意入坑1:环境变量要配置为x86的,而不能是x64的,这和vs2015平台选择的win32统一

2.VS2015中opencv的配置:在SIFT处单击鼠标右键,在弹出的快捷菜单中选择“属性”选项,进入SIFT的属性页

->(默认)配置处选择:Debug,平台选择:活动(Win32)

在“配置属性”点击“VC++目录“->“包含目录”点击编辑->在“包含目录”的对话框中将OpenCV的头文件路径(一共三个,在build文件夹下)添加进去->点击“确定“

  我的是:1.D:\ProgramFiles\opencv2\opencv\build\include  2.D:\ProgramFiles\opencv2\opencv\build\include\opencv  3.D:\ProgramFiles\opencv2\opencv\build\include\opencv2

  >“库目录”点击编辑->在“库目录”的对话框中将静态链接库路径(在\build\x64或者x86文件夹所在的路径,这和vs2015平台选择的win32统一,选择x86)

  我的是:D:\ProgramFiles\opencv2\opencv\build\x86\vc12\lib添加进去->点击“确定“

在“配置属性”点击“链接器“->点击“输入”->-> 在“附加依赖项”点击编辑->把lib库的名称(lib库文件在\build\x86\vc14\lib下)添加进去->点击“确定“->点击“确定“

Debug配置下:
opencv_calib3d2411d.lib;opencv_contrib2411d.lib;opencv_core2411d.lib;opencv_features2d2411d.lib;opencv_flann2411d.lib;opencv_gpu2411d.lib;
opencv_highgui2411d.lib;opencv_imgproc2411d.lib;opencv_legacy2411d.lib;opencv_ml2411d.lib;opencv_objdetect2411d.lib;opencv_ts2411d.lib;opencv_video2411d.lib;

Release配置下(先不用配置):

opencv_contrib2411.lib;opencv_core2411.lib;opencv_features2d2411.lib;opencv_flann2411.lib;opencv_gpu2411.lib;opencv_highgui2411.lib;opencv_imgproc2411.lib;
opencv_legacy2411.lib;opencv_ml2411.lib;opencv_objdetect2411.lib;opencv_ts2411.lib;opencv_video2411.lib;

注意入坑2:本平台需要安装opencv 2.x ,不能安装opencv 3.x,因为依赖库有问题,opencv3.x集成为一个了

注意入坑3:系统环境变量opencv只能配置一个(我的为:D:\ProgramFiles\opencv2\opencv\build\x86\vc12\bin),如果有opencv3.x或者opencv 2.x的x64的都会在VS中运行出错

如D:\ProgramFiles\opencv2\opencv\build\x86\vc12\bin和D:\ProgramFiles\opencv2\opencv\build\x64\vc12\bin就会报错:应用程序无法启动0xc000007b

1.3 GTK+配置
下载:http://ftp.gnome.org/pub/gnome/binaries/win32/gtk+/

我下载了2.24.10版本,下载后文件为:gtk_-bundle_2.24.10-20120208_win32.zip

 注意入坑4:官网下载:https://www.gtk.org/download/windows.php,  没有All-in-one bundle 版本,而要求下载msys2-x86_64-20180531.exe

而MSYS2 (Minimal SYStem 2) 是一个MSYS的独立改写版本,主要用于 shell 命令行开发环境。同时它也是一个在Cygwin (POSIX 兼容性层) 和

MinGW-w64(从”MinGW-生成”)基础上产生的,追求更好的互操作性的 Windows 软件。

解压至->->D:\ProgramFiles,并将文件夹重命名为:gtk_-bundle_2.24.10_win32  (简洁点,方便添加环境变量和库)

配置:1.添加环境变量(我的为:D:\ProgramFiles\gtk_-bundle_2.24.10_win32\bin)

->->按说明验证,Win+R输入cmd运行,在cmd中输入“pkg-config --cflags gtk+-2.0” ,会有一些输出,输入 “gtk-demo” ,会出现一个示例,演示GTK+的一些功能控件。

->->接下来就跟OpenCV一样,要在VS2012的项目中进行一番配置了。在CMD中输入运行“pkg-config --cflags --libs gtk+-2.0”,可以看到需要包含的目录和链接库。

  可以将这些输出导入txt文件中,运行“pkg-config --cflags --libs gtk+-2.0 > D:\ProgramFiles\gtk_-bundle_2.24.10_win32\gtk.txt”,打开D:\ProgramFiles\gtk_-bundle_2.24.10_win32\gtk.txt,

内容如下:-mms-bitfields -ID:/ProgramFiles/gtk_-bundle_2.24.10_win32/include/gtk-2.0

-ID:/ProgramFiles/gtk_-bundle_2.24.10_win32/lib/gtk-2.0/include -ID:/ProgramFiles/gtk_-bundle_2.24.10_win32/include/atk-1.0 -I

D:/ProgramFiles/gtk_-bundle_2.24.10_win32/include/cairo -ID:/ProgramFiles/gtk_-bundle_2.24.10_win32/include/gdk-pixbuf-2.0 -I

D:/ProgramFiles/gtk_-bundle_2.24.10_win32/include/pango-1.0 -ID:/ProgramFiles/gtk_-bundle_2.24.10_win32/include/glib-2.0 -I

D:/ProgramFiles/gtk_-bundle_2.24.10_win32/lib/glib-2.0/include -ID:/ProgramFiles/gtk_-bundle_2.24.10_win32/include -I

D:/ProgramFiles/gtk_-bundle_2.24.10_win32/include/freetype2 -ID:/ProgramFiles/gtk_-bundle_2.24.10_win32/include/libpng14

-LD:/ProgramFiles/gtk_-bundle_2.24.10_win32/lib -lgtk-win32-2.0 -lgdk-win32-2.0 -latk-1.0 -lgio-2.0 -lpangowin32-1.0 -lgdi32 -l

pangocairo-1.0 -lgdk_pixbuf-2.0 -lpango-1.0 -lcairo -lgobject-2.0 -lgmodule-2.0 -lgthread-2.0 -lglib-2.0 -lintl

然后根据这个来添加配置。在VS项目属性的“VC++目录”->“包含目录”中添加/GTK/include/gtk-2.0 到 /GTK/include/libpng14的这些路径,注意要用带盘符的完整路径,那个-mms-bitfields不用管它。

-L后面的D:/ProgramFiles/gtk_-bundle_2.24.10_win32/lib要添加在“库目录”中。

再后面的-l是链接库的名字,把这一串”gtk-win32-2.0.lib;gdk-win32-2.0.lib;atk-1.0.lib;gio-2.0.lib;pangowin32-1.0.lib;gdi32.lib;pangocairo-1.0.lib;gdk_pixbuf-2.0.lib;

pango-1.0.lib;cairo.lib;gobject-2.0.lib;gmodule-2.0.lib;gthread-2.0.lib;glib-2.0.lib;intl.lib;”添加进配置属性->链接器->输入->”附加依赖项“ 中就行了。

注意入坑5:报错gdk_screen_get_width被display_big_img调用,原因:直接复制D:/ProgramFiles/gtk_-bundle_2.24.10_win32/include/gtk-2.0错误,因为里边是“/”,而win系统下路径是"\"

  所以,“包含目录”“库目录”下的路径都是"\"

注意入坑6:只能下载win32的,而不能是win64的,这和vs2015平台选择的win32统一

GTK+ win64的下载链接http://ftp.gnome.org/pub/gnome/binaries/win64/gtk+/2.22/

注意入坑7:报错找不到gdk.h或gtk.h>,原因:直接复制D:/ProgramFiles/gtk_-bundle_2.24.10_win32/include/gtk-2.0错误,因为里边是“/”,而win系统下路径是"\"

  所以,“包含目录”“库目录”下的路径都是"\",

而和utils.c下#include <gdk/gdk.h>和#include <gtk/gtk.h>无关,改成#include <gtk-2.0/gdk/gdk.h>和#include <gtk-2.0/gtk/gtk.h>错误依旧

1.4代码修改

  1.报错:“M_PI”未声明:发生在imgfeatures.c中。

  解决方案:在imgfeatures.h中加入 #define M_PI        3.14159265358979323846

  2.报错:无法找到头文件dirent.h。

  解决方案:在网上百度搜索:dirent.h - dirent API for Microsoft Visual Studio,然后下载文件,我是在码云上下载的(链接:https://gitee.com/lomox/beanstalkd-win/blob/master/dirent.h,

  解压后进入文件夹拷贝dirent.h),放在include文件夹(我的是:D:\Working\VS2015Projects\SIFT\include)下

  3.运行本地windows调试器后报错:无法启动应用程序,因为计算机中丢失msvcp120d.dll,关闭sift.exe后返回值为 -1073741515 (0xc0000135) '未找到依赖 dll'。

  原因:微软的Visual Studio最终用户许可协议是禁止发布调试版(名字后面有D)的DLL的,msvcp120d.dll和msvcr120d.dll是VS2013版本中的调试库文件,存在于路径:

  “\Microsoft Visual Studio 12.0\VC\redist\x86\Microsoft.VC120.CRT”中,VS2015版中只有msvcp140d.dll和msvcr140d.dll,但是OpenCV2.4.xx用的库版本最高为VC12,

  该库并没有升级VC14,我们需要用到VS2013的调试库文件,所以会造成msvcp120d.dll和msvcr120d.dll的缺失。

  解决方案:网上的方法是下载msvcp120d.dll和msvcr120d.dll到系统路径:C:\Windows\System32或C:\Windows\SysWOW64。但是我认为这样做不可取,随意添加到系统路径中容易与

  其他软件的安装发生冲突。我们可以将其放到OpenCV库路径中:“\OpenCV\opencv\build\x86\vc12\bin”。这样当我们不使用opencv时也不会调用这两个库文件,比较安全。
  下载链接:链接:https://pan.baidu.com/s/1nvN3atF 密码:11ak

  我下载的为:msvcp120d%E7%AD%89.rar,解压后拷贝至“\opencv\build\x86\vc12\bin”目录(我的是:D:\ProgramFiles\opencv2\opencv\build\x86\vc12\bin)下   ,重新运行本地windows调试器

1.5 VS2015编译报错

VS“无法查找或打开PDB文件”是怎么回事?如何解决?参看:http://c.biancheng.net/view/474.html

RobHess的SIFT环境配置的更多相关文章

  1. python+opencv+sift环境配置教程

    最近在做对应点估计homography,需要用到opencv,c++的接口不如python的接口来的方便 但是在安装python接口的opencv的时候,遇到了各种问题,主要是函数找不到的问题 比如在 ...

  2. RobHess的SIFT代码解析步骤一

    平台:win10 x64 +VS 2015专业版 +opencv-2.4.11 + gtk_-bundle_2.24.10_win32 主要参考:1.代码:RobHess的SIFT源码:SIFT+KD ...

  3. VS2010+opencv2.4.10+gsl_1.8配置实现RobHess的SIFT程序

    最近在做sift方面的毕业设计,弄了一天终于把RobHess的SIFT程序调通了.虽然网上有很多相关博文,但是我还是想把我的调试的过程跟大家分享一下.由于工程没法在博文上传,所以有需要的可以在下方留言 ...

  4. 阅读《RobHess的SIFT源码分析:综述》笔记

    今天总算是机缘巧合的找到了照样一篇纲要性质的文章. 如是能早一些找到就好了.不过“在你认为为时已晚的时候,其实还为时未晚”倒是也能聊以自慰,不过不能经常这样迷惑自己,毕竟我需要开始跑了! 就照着这个大 ...

  5. uboot环境配置

    uboot环境配置 通过配置uboot让它在启动过程中从tftp获取内核和设备树,并从在加载内核之后把通过启动参数将"从nfs挂载根文件系统"传入内核.这个配置主要是通过uboot ...

  6. 史上最全Windows版本搭建安装React Native环境配置

    史上最全Windows版本搭建安装React Native环境配置 配置过React Native 环境的都知道,在Windows React Native环境配置有很多坑要跳,为了帮助新手快速无误的 ...

  7. Electron的环境配置

    原文地址http://huisky.com/blog/161218121551123 本文介绍了Electron的环境配置,包括Electron下载.nodejs下载安装.NPM+Bower安装配置. ...

  8. Python开发环境配置

    好久没有写博客了,自从6月份毕业后,进入一家做书法.字画文化宣传的互联网公司(www.manyiaby.com),这段时间一直在进行前端开发,对于后端的使用很少了,整天都是什么html.css.jav ...

  9. PHP_环境配置_python脚本_2017

    Apache配置 需要安装:VC2015 httpd-2.4.16-win32-VC14.zip VC14就是2015的环境. 又比如:php-5.6.12-Win32-VC11-x86 VC11就是 ...

随机推荐

  1. Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.5:test

    解决方法: 打包跳过测试有两种方法 一是命令行 mvn clean package -Dmaven.test.skip=true 二是写入pom文件 <plugin> <groupI ...

  2. PAT 甲级 1016 Phone Bills (25 分) (结构体排序,模拟题,巧妙算时间,坑点太多,debug了好久)

    1016 Phone Bills (25 分)   A long-distance telephone company charges its customers by the following r ...

  3. ElasticSearch——集群搭建

    1.准备 1.1.组件 JDK:1.8版本及以上: ElasticSearch:6.2.4版本: 1.2.服务器 3台服务器 2.安装 2.1.下载解压 wget https://artifacts. ...

  4. Spring Aop(十)——编程式的Pointcut

    转发地址:https://www.iteye.com/blog/elim-2396526 编程式的Pointcut 除了可以通过注解和Xml配置定义Pointcut之外,其实我们还可以通过程序来定义P ...

  5. CSRF利用

    使用burpsuite的csrf poc选项,可以生成HTML代码 json CSRF flash + 307跳转 https://github.com/sp1d3r/swf_json_csrf

  6. 关于使用Arduino做开发的理解

    转载自arduino中文社区 https://www.arduino.cn/thread-5414-1-1.html 见到很多人对Arduino的开发方法 .应用场景有误解,特别开个帖子说明下. 误解 ...

  7. Hadoop入门学习笔记之一

    http://hadoop.apache.org/docs/r1.2.1/api/index.html 适当的利用 null 在map中可以实现对文件的简单处理,如排序,和分集合输出等. 需要关心的内 ...

  8. python第二部分

    什么数据类型? int 1, 2, 3 用来运算的 float 1.2 str 用来存储一定的信息"" '' list =[1,2 ,3 "有", 是]用来存储 ...

  9. elasticsearch 映射 dynamic用法

  10. Java编程思想(四)初始化和清除

    4.1用构建器自动初始化 若某个类中有一个构建器,那么在创建对象时,Java会自动调用哪个构建器    在Java中构建器的名字必须与类名相同,这样可以保证这样一个方法惠子初始化期间自动调用: 利用构 ...