最近开始入模式识别的坑,自然被迫上OpenCV了。
在多次尝试给VS2015扩展Windows 10 SDK无果后(不要问我为啥。。VS2015开发C++的标准库全给扔到这个SDK里了,打包在VS安装程序里的下载地址被墙掉,所以完全没法下。。),果断决定换Linux + GCC环境。
Linux选择了CentOS7,VM下给1.5G内存双核,NAT的网络模式。以下备注环境搭建流程和遇到的问题
开始折腾时准备用VMTools先搞定文件共享,然后折腾半天发现VM10自动安装的VMTool好像功能不全还是怎么的,得卸载重装。 这里需要注意就是CentOS原版没有Perl和GCC,而VMTools需要这两个作为先决条件。 GCC的安装很容易, yum install gcc gcc-c++即可。 Perl的基本环境也可以用 yum install perl* 搞定,但是如果要装特定版本的需要单独折腾手动装。(截至这时我的vmTools并没有成功安装,公司网络太糟糕严重影响效率)
关于VMTools的安装,很多人安装中会发现提示Kernel版本不对。这里有说将VMTools内 /tmp/vmware-tools-distrib/lib/modules/source目录下,解压vmhgfs.tar,修改解压后的shared/compat_dcache.h文件,把54行 if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 11, 0) 的版本号改成 3,10 之后重新打包成vmhgfs.tar,但是试验时这行的版本是2.8.x, 低于我CentOS内核……故暂时无解。 这里外链一个还没看的网址,据说有解决方案:http://www.crifan.com/vmware_workstation_ubuntu_install_vmware_tools_enter_the_path_to_the_kernel_header_files_for_the_3_8_0_27_generic_kernel/
跳过VMTools之后开始OpenCV的环境搭建,这里以备份为主:
首先需要安装依赖包,这部非常重要(感谢各位认真写博客的大神~)
命令如下:
yum install cmake gcc gcc-c++ gtk+-devel gimp-devel gimp-devel-tools gimp-help-browser zlib-devel libtiff-devel libjpeg-devel libpng-devel gstreamer-devel libavc1394-devel libraw1394-devel libdc1394-devel jasper-devel jasper-utils swig python libtool nasm
若不安装则OpenCV在最后调用时会抛错:
OpenCV Error: Unspecified error (The function is not implemented. Rebuild the library with Windows, GTK+ 2.x or Carbon support. If you are on Ubuntu or Debian, install libgtk2.0-dev and pkg-config, then re-run cmake or configure script) in cvNamedWindow,...................
此时只能将编译好的opencv删除再重新编译,即将/usr/local/lib和/usr/local/include/中的有关的删除
mv /usr/local/lib/libopencv*
mv -fr /usr/local/include/opencv
mv -fr /usr/local/include/opencv2
然后再重新编译opencv.
安装/更新Cmake和Opencv
cmake 用于完成openCV的编译,尽量用新版
安装: yum install cmake 理论上这会安装最新版本
下载并解压openCV,并拷贝至/usr/local/下,解压路径为/usr/local/OpenCV_3.1.0/.
进入目录,使用cmake编译openCV
cmake CMakeLists.txt
若无报错,则openCV安装成功。
若报错-> 1). 考虑安装其他版本cmake,再重新编译。
2). 考虑更换openCV的版本,重复步骤。
上述步骤完成后应当为openCV添加环境变量。
此处三种解决方案:
(1)用ln将需要的so文件链接到/usr/lib或者/lib这两个默认的目录下边
ln -s /where/you/install/lib/*.so /usr/lib
sudo ldconfig
(2)修改LD_LIBRARY_PATH
export LD_LIBRARY_PATH=/where/you/install/lib:$LD_LIBRARY_PATH
sudo ldconfig
(3)修改/etc/ld.so.conf (我采用了此种方法)
vim /etc/ld.so.conf
add /where/you/install/lib
sudo ldconfig
暂时记录到此,跑通测试后继续更新