之前写过一片linux下opencv,其实那个只是opencv的java binding。昨天写了个IDE的选择和使用,今天自然要把opencv给配置全以便C/C++的工作。
官网上下载最新版opencv后解压出来,我是放在~/opencv/。然后在opencv下建立文件夹,一般取名build,然后在这个build文件夹下使用cmake安装即可。opencv的安装其实依赖很多其它库函数,在opencv的官网教程里是用的ubuntu为例。
http://docs.opencv.org/doc/tutorials/introduction/linux_install/linux_install.html
sudo apt-get install build-essential
上面的命令可以安装一些必要的库例如cmake等,下面还有其它若干个库需要安装。在Ubuntu下可以简单的用用上面的语句加上相应给出的库名即可。可惜在CentOS或者YUM下这些库的名字都改变了,建议使用YUM search 加相应关键词(如gtk2)等来查找,找到具体包名后再sudo yum install gtk2-devel.x86_64就行。顺便提一句,在安装java binding时,CentOS下JAVA和ANT都配置好并且make file已找到,可就是java test通不过,在Fedora下则没有这个问题。在OpenCV官网论坛里看见有人提出,也许是个潜在bug在修正。其中那个ffmpeg是视频库的集成,在yum中找不到,除非寻找类似ppa的东西。个人猜测如果用不到视频函数,也许这个不是必要安装。有些第三方的库也可以选择安装,比如我比较推荐Intel的多线程TBB。在YUM或apt中都可以找到安装。在配置opencv是加个控制语句就可以编译出来了。
cmake -D CMAKE_BUILD_TYPE=DEBUG -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON ..
安装好依赖项后,打开一个终端进入刚才创建的build文件子目录下输入上面的语句,就可以创造配置文件了。其中前两个是说明编译类型为Debug,当然大多人喜欢Release来节省空间,但我的工程大多实验,所以选择了Debug。安装路径在/usr/local下,并开启了tbb选项。
若配置这一步没有大的问题,就可以“造文件”了。在当前build文件夹下直接输入make命令。这个过程比较长,是根据配置文件来编译出所需的所有库文件。编译好100%后输入
sudo make install
会快速的安装,也就是把文件放在该放的位置。最后还有一步很重要,否则在Code Blocks中如何配置也是无法找到libopencv_core.so.24的。
如果按照刚才的命令安装在/usr/local下,那么库文件so.2.4应该在/usr/local/lib下可以找到,而他们的头文件在/usr/local/include/下可以看见opencv/和opencv2/。
sudo gedit /etc/ld.so.conf.d/opencv.conf
来创建个文件空白文件,里面之写入so文件所在位置,比如 /usr/local/lib,然后保存。
sudo ldconfig -v
使用这个命令来建立链接,到此位置opencv算是安装配置成功。
接下来打开Code Blocks,建立个新项目。可以选择直接建立opencv项目,会自动生成简短代码和一张经典的lena照片。右键在项目上点开build options。因为我是debug编出来的opencv,所以CB项目也只是debug的。注意不可以混用debug和release的opencv文件和项目,否则出问题。在debug中很容易看到linker和search directories,类似在VS中添加链接器和包含目录。在linker中添加/usr/local/lib下所需so文件,在search中添加刚才那个/usr/local/include/opencv2。一切大功告成,点击编译运行CB给的sample工程即可以看到lena了。