安装opencv

来源:互联网 发布:宠物翻译器软件 编辑:程序博客网 时间:2024/05/19 02:04

最近试验了一下 ubuntu 12.06 (x86) 安装,openCV 

安装脚本

最好的文章是 https://help.ubuntu.com/community/OpenCV, 它提供一个脚本(opencv.sh) 做了所有的安装工作

[html] view plain copy 在CODE上查看代码片派生到我的代码片
  1. version="$(wget -q -O - http://sourceforge.net/projects/opencvlibrary/files/opencv-unix | egrep -m1 -o '\"[0-9](\.[0-9]+)+' | cut -c2-)"  
  2. echo "Installing OpenCV" $version  
  3. mkdir OpenCV  
  4. cd OpenCV  
  5. echo "Removing any pre-installed ffmpeg and x264"  
  6. sudo apt-get -qq remove ffmpeg x264 libx264-dev  
  7. echo "Installing Dependenices"  
  8. sudo apt-get -qq install libopencv-dev build-essential checkinstall cmake pkg-config yasm libjpeg-dev libjasper-dev libavcodec-dev libavformat-dev libswscale-dev libdc1394-22-dev libxine-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev libv4l-dev python-dev python-numpy libtbb-dev libqt4-dev libgtk2.0-dev libfaac-dev libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev libtheora-dev libvorbis-dev libxvidcore-dev x264 v4l-utils ffmpeg  
  9. echo "Downloading OpenCV" $version  
  10. wget -O OpenCV-$version.zip http://sourceforge.net/projects/opencvlibrary/files/opencv-unix/$version/opencv-"$version".zip/download  
  11. echo "Installing OpenCV" $version  
  12. unzip OpenCV-$version.zip  
  13. cd opencv-$version  
  14. mkdir build  
  15. cd build  
  16. cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D BUILD_EXAMPLES=ON -D WITH_QT=ON -D WITH_OPENGL=ON ..  
  17. make -j2  
  18. sudo checkinstall  
  19. sudo sh -c 'echo "/usr/local/lib" > /etc/ld.so.conf.d/opencv.conf'  
  20. sudo ldconfig  
  21. echo "OpenCV" $version "ready to be used"  

稍微阅读脚本,就知道它做的事情, 有下面几点值得关于

1)它没有用 make install, 而是用 checkinstall

CheckInstall keeps track of all files installed by a "make install" or equivalent, creates a Slackware, RPM, or Debian package with those files, and adds it to the installed packages database, allowing for easy package removal or distribution.

CheckInstall 是一款优秀的源码安装软件,它使得 Linux 软件管理更加方便。特别是在源码需要经常重复编译的情况下,CheckInstall 可以让你丝毫不破坏系统一致性的前提下完全的卸载程序。而且,你还可以使用这些编译好的安装包直接在其他的机器上安装无须再重新编译。

2) 没有设置 LD_LIBRARY_PATH, 而是用 ldconfig

ldconfig是一个动态链接库管理命令,为了让动态链接库为系统所共享,还需运行动态链接 库的管理命令--ldconfig ldconfig 命令的用途,主要是在默认搜寻目录(/lib和/usr/lib)以及动态库配置文件/etc/ld.so.conf内所列的目录下,搜索出可共享的动态 链接库(格式如前介绍,lib*.so*),进而创建出动态装入程序(ld.so)所需的连接和缓存文件.缓存文件默认为 /etc/ld.so.cache,此文件保存已排好序的动态链接库名字列表.


编译错误

我在编译中遇到一个错(可能x86才有)

http://git.buildroot.net/buildroot/tree/package/opencv/opencv-0001-core-fix-x86-PIC-code-compilation.patch?id=2b581cc04f3b106928f3d0c3b7fb6c44e50c8a61


使用 opencv

Python 的例子

[html] view plain copy 在CODE上查看代码片派生到我的代码片
  1. from cv2.cv import *  
  2.   
  3. img = LoadImage("/home/USER/Pictures/python.jpg")  
  4. NamedWindow("opencv")  
  5. ShowImage("opencv",img)  
  6. WaitKey(0)  

C++ 例子

[html] view plain copy 在CODE上查看代码片派生到我的代码片
  1. #include<opencv2/highgui/highgui.hpp>  
  2. using namespace cv;  
  3.   
  4. int main()  
  5. {  
  6.   
  7.     Mat img = imread("/home/USER/Pictures/python.jpg",CV_LOAD_IMAGE_COLOR);  
  8.     imshow("opencvtest",img);  
  9.     waitKey(0);  
  10.   
  11.     return 0;  
  12. }  

编译命令

[html] view plain copy 在CODE上查看代码片派生到我的代码片
  1. $ g++ -ggdb `pkg-config --cflags opencv` -o `basename opencvtest.cpp .cpp` opencvtest.cpp `pkg-config --libs opencv`  
  2. $ ./opencvtest  

如果直接写 Makefile 文件

[html] view plain copy 在CODE上查看代码片派生到我的代码片
  1. CFLAGS = `pkg-config --cflags opencv`  
  2. LIBS = `pkg-config --libs opencv`  
  3.   
  4. % : %.cpp  
  5.         g++ $(CFLAGS) $(LIBS) -o $@ $<  

( ref: http://stackoverflow.com/questions/9870297/makefile-to-compile-opencv-code-in-c-on-ubuntu-linux) 

这也说明 pkg-config 命令的用法

0 0
原创粉丝点击