问题分析
1 问题
在建立好基于opencv3的深度学习Caffe环境后,运行一些特殊的基于opencv2的caffe_demo编译时出现:
fatal error: opencv2/contrib/contrib.hpp: 没有那个文件或目录
如下图
2 分析
首先不要怀疑opencv3安装出了问题,个人找了些博客,得出结论:
opencv3中已经没有了contrib这个模块,特别指出不是编译opencv_contrib的问题,而是opencv_contrib中也没有contrib模块
所以再怎么重装opencv3+opencv_contrib也是无效的
问题解决
3 解决方案
如果是在python中调用contrib模块,大可直接:
sudo pip install opencv-contrib-python
但我们这里是C/C++,所以我的办法是再安装一个opencv2版本
4 opencv2安装注意事项
这里值得一提的是,我的Ubuntu环境为了满足大多demo需求,已经安装了opencv3.4.0版本,安装opencv2只是满足个别demo,所以再安装opencv2时要注意下面几点:
1)安装的系统路径不能再是:/usr/local (opencv3已经占用,不能冲突)
2)建议不要再安装opencv_python (opencv3已经支持)
5 opencv2安装
本中选择opencv2.4.10,在自己放安装包的目录下
mkdir opencv24
cd opencv24
wget https://github.com/opencv/opencv/archive/2.4.10.zip
unzip 2.4.10.zip
cd opencv-2.4.10
mkdir build
cd build
cmake-gui
Generate步骤和opencv3安装一样
然后,注意
1)去掉BUIILD_opencv_python
2)去掉WITH_CUDA (有它编译出错,可根据自己情况决定)
3)更改CMAKE_INSTALL_PREFIX的Value值:/usr/local/opencv2410 (默认为/usr/local,可根据自己喜好设置路径,但要记住放在那里的)
4)再次Generate,若无错,再Configure,关闭cmake-gui
5)编译
make all -j16
sudo make install
6)ok
7)查看 (该目录就有contrib模块了)
ll /usr/local/opencv2410/include/opencv2/
应用
6 caffe调用
1)cmake方式
在CMakeLists.txt中,project(Caffe C CXX)之前加上:
set(OpenCV_DIR “/usr/local/opencv2410/share/OpenCV”)
注意这里的引号,结果如图红色字体才对
即可,再次编译
本人亲测有效
2)make方式
目前在连接opencv库还有点问题,待测试成功再更新,当然只要一种方式能成功,caffe就可以跑起了