Python3.6+Ubuntu安装OpenCV 3.2.0,在Anaconda+Spyder环境下运行BING-Objectness检测
前言
BING算法是一种能够快速生成图片中proposals的算法,由程明明老师团队在CVPR2014的论文《BING: Binarized Normed Gradients for Objectness Estimation at 300fps》中提出。由于年代较远,作者开源的代码和大部分复现代码均采用C++编写,并且算法已经被集成到了OpenCV-Contrib中,便于直接调用。利用Python调用C++库的方法较为繁琐,在GitHub上浏览过后只搜到了下面提到的一篇“在Python下调用OpenCV内嵌BING算法”的开源代码。踩了不少坑之后终于成功把代码跑起来了,所以在此做个总结。
实验代码及所需运行环境
- 实验参考代码:A Python Wrapper of OpenCV implementation of BING Objectness
- 所需运行环境:
- CMake:参考代码给出要求大于2.8版本,实际使用3.9,避免之后与Boost库的版本冲突
- TBB:参考代码专门列出的一项需求,但实际使用时可能包含在OpenCV配置过程
- OpenCV:参考代码要求(>=3.0.0-dev with opencv_contrib),这里采用3.2.0版本
- Boost:专门用于Python调用C++库的工具,参考代码未给出版本要求,实际使用1.62.0版本
- Boost.Numpy:参考代码同样未给出版本需求,这里需要注意与Boost版本匹配
- 其他运行环境:
- Python版本:3.6.6
- IDE:Anaconda Spyder
- Ubuntu版本:16.04
环境配置步骤
CMake安装步骤:
- 方式一:apt-get安装,命令为
$ sudo apt-get install cmake
,但是安装的版本为3.5.1,此后发现与Boost版本不兼容,使用CMake编译时会出现类似Imported targets not available for Boost version 106502
的错误,故不推荐 - 方式二:下载源码方式安装:
$ wget https://cmake.org/files/v3.9/cmake-3.9.4.tar.gz
解压至任意路径,并进入文件夹cmake-3.9.4路径下,
$ cd cmake-3.9.4
$ ./bootstrap
$ make
$ sudo make install
安装完成后运行$ cmake -version
查看CMake版本,应当出现以下结果:
如果出现无法找到CMake路径的错误,参考ubuntu linux 设置记录中的方法,向~/.bashrc
中加入一行export