• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
patty-patty
博客园    首页    新随笔    联系   管理    订阅  订阅
在windows下编译d_nets遇到的各种问题汇总

  在windows下编译d_nets费了我将近一周的课余时间。期间问题数不胜数,今天终于成功。

  编译d_nets需要安装了opencv的vs,当然也可以自己cmake一下opencv。我是在vs2010上配置opencv各种参数。

(1)opencv2.4.1 不支持SIFT    

   首先我安装的是opencv2.4.1版本,vs2010配置各种路径后,cv::SIFT::等一系列函数均不识别。刚开始接触opencv,最开始一直没找到报错的原因。百度了好久发现,opencv2.4.1版本已经把sift surf这两个更为nofree了,换句话说,opencv2.4.1是不支持sift系列函数的%>_<% 。opencv2.3及以前系列都可以用。

(2)vs2010+opencv2.3.1

  1、配置时,link error, 找不到opencv_core231.dll,百度之,把所有dll全改为……d.dll。opencv_core231.dll是release版本,opencv_core231d.dll是debug版本。

  什么是debug 和release版本?Debug  和  Release  编译方式的本质区别   Debug   通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序。Release   称为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以便用户很好地使用。

  2、imread(filename,1)读不进图片?这个也是把所有的dll都换成debug版本。路径用相对路径,复制过去的,没有错。后来我还是没读进去图片,放弃之。

(3)vs2010+opencv2.2(for vs2010)

  opencv这个版本是专门为vs2010设置的。以上我的血泪史以及csdn上各种问题表明,opencv其他版本和vs2010配合很不好,总会出现这样那样的错误。

  1、M_PI不识别?报错是没有设置这个变量。我在头文件里加了cmath依然无果,只好自己define。

  2、imread(filename,1)读不进图片?这里我用的是相对路径  /images/img1.pgm ,错误出现了,这是我过了好久才发现的,应该是\images\img.pgm,顿觉自己脑残无比。

  3、F5调试时,命令窗口一闪而过?在程序main函数 return 0 之前加入 system("pause").ok。

  3、ctrl+F5后,命令窗口一闪而过? 在vs下 ,  项目->属性->链接器->系统->子系统, 选择  控制台(/SUBSYSTEM/CONSOLE)这一项,ok,问题解决。

(4)vs2010输入命令行参数?

  我是在项目 项目属性 参数 里输的参数,没有问题。但觉得太麻烦,于是在该工程的debug文件夹里,新建一个a.txt,并输入CMD.更名为a.dat。 

      1、dat文件运行时一闪而过?    计算机->属性->高级系统设置->环境变量->在系统变量 PATH里加入  C:\Windows\System32 ;bat文件就可以正常运行了。

 

  最后,在a.bat里输入  d_nets images\img1.pgm s=0.5 images\img2.pgm s=0.5    运行成功。

  d_nets程序使用SIFT取的兴趣点。而SIFT是根据图像的灰度对图像进行高斯模糊来取点,   所以程序在处理模糊图像匹配时,效果很差,几乎没有strips。

 

 

posted on 2013-03-20 14:11  patty-patty  阅读(306)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3