今天研究图像拼接,需要用到openCV中的stitching_detail。
使用的是3.2.0版本,使用VS2017打开sample项目后,参照博客指南:
完成了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算子啥啥的)