您的位置:首页 > 产品设计 > UI/UE

openCV源码Cmake编译后,VS build报错问题解决

2017-07-17 17:17 1081 查看
    今天研究图像拼接,需要用到openCV中的stitching_detail。

    使用的是3.2.0版本,使用VS2017打开sample项目后,参照博客指南:

全景视频拼接(二)--OpenCV源码解析

    完成了build工作,然后在cmd命令行中,尝试读取图片运行,遇到了缺少SURF算子的问题。

OpenCV Error: The function/feature is not implemented (OpenCV was built without SURF support)

    该问题主要由于3.2.0中没有SURF和SIFT算法,之前一些解决方案include nonfree的解决办法也不能用(目录下已经取消了这个包)。因此,需要重新对openCV进行编译。这里参照的是以下博客:

OpenCV学习笔记(八)—— OpenCV 3.1.0 + opencv_contrib编译(Windows)

    在Cmake对openCV进行编译的时候,遇上了报错。报错的问题是下载文件的校验码不匹配。通过手动在网上下载,复制到对应目录中就可以解决了。这里提供CSDN的一个下载地址,感谢上传者分享。
http://download.csdn.net/detail/u014045708/9831521
该压缩包中包含了基本所有需要下载的文件,且校验码都匹配。

    Cmake完成编译后,使用VS 2017打开OpenCV工程。(我在Cmake编译时选择的是2017)。

    进行重建的时候出现报错。

    报错内容包括以下:

    1.cmd.exe 已退出,代码为1

    2./lib/Debug/xxx.lib 无法访问

    3.Unicode编码格式错误,该文件包含不能在当前代码页(936)中表示的字符。

    

   参照一些解决办法,认为是
链接器-依赖 的问题。

    经过我查找和比对,发现链接器中的依赖没有问题(由Cmake编译后自动生成的依赖关系),而是实际上目录中没有对应的lib文件。编译器输出的lib文件中,主要以cuda居多,版本号都是320。

   后来,我想起我CUDA安装对应的是VS2015版本(VS2017未支持CUDA),因此,我重新使用了Cmake,选择VS2015
win64位进行编译生成。之后,使用VS2015打开工程,重建,顺利通过(等了很久……)。

 
  注意!!使用VS2015(你CUDA安装的那个版本)打开工程,build!


 
  build的时间大概在2个小时左右。期间控制台不断输出Unicode编码错误,是正常情况!(也有可能是乱码)


 
  编译后,打开原有的sample,注意更改工程的依赖、库、链接器,删除掉原有的依赖目录,添加编译的install下的目录。否则,build之后,生成的工程依然会报一样的错误(缺少SURF算子啥啥的)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐