因为程序在本地运行出现内存不足(mat类型create时,需要(15000+22000)*(33*321)*4=1,567,764,000bytes空间,15000和22000为正负样本数量,33为样本大小32加1,321=32*10+1,CV_32SC1类型数据每个像素占用4个bytes),这样也就是差不多超过1.5G,当初脑残装了32位系统,现在表示无能为力分配这么多内存。)所以需要在服务器上运行程序。由于服务器装有旧版本OpenCV,我的程序需要新OpenCV库里的东西,所以只能在我的用户下重装一下。
大体流程 参考:
1.首先在终端运行下列命令进行必要的编译环境安装。
sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg62-dev libtiff4-dev cmake libswscale-dev libjasper-dev
2.下载OpenCV-2.4.1
# tar -jxvf OpenCV-2.4.1.tar.bz2
# cd OpenCV-2.4.1
3.终端运行
# mkdir build
# cd build
# cmake ../(此处参考下面的命令可以修改make的目录,默认是在/usr/local,但是非root用户不能这样,否则后面有make的时候可能失败,因为需要把一些文件写入/usr/local/下面,但是这个目录一般用户可能没有write权限)
4.依次运行
# make
# make install
5.配置必要的库
# sudo gedit /etc/ld.so.conf.d/opencv.conf
添加/usr/local/lib这句到文件中,文件或许是空的,不影响。
# sudo ldconfig
# sudo gedit /etc/bash.bashrc
添加下面两行到文件的末尾并保存。
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH
6.运行测试程序
# mkdir opencv_samples
# cp OpenCV-2.4.1/samples/c/* opencv_samples
# cd opencv_samples/
# chmod +x build_all.sh
# ./build_all.sh
# ./facedetect --cascade="/usr/local/share/OpenCV/haarcascades/haarcascade_frontalface_alt.xml" --scale=1.5 lena.jpg
不过之前cmake在服务器上的都有,重点就是install的时候需要修改一下位置,不能默认装在/usr/local/下,下面来自:
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local .. 不过上面有个地方需要修改: D跟CMAKE是连在一起的。
推荐阅读:
Ubuntu 12.04 安装 OpenCV2.4.2
CentOS下OpenCV无法读取视频文件