Setting/Installing up OpenCV 2.4.6.1+ on Ubuntu 12.04.02

匿名 (未验证) 提交于 2019-12-03 01:58:03

问题:

I had previously used OpenCV 2.4.5 with some certain configs and packages on Ubuntu 12.04.1 but had issues upgrading to OpenCV 2.4.6.1 on Ubuntu 12.04.2

I would like to share some ideas (a compilation of noteworthy information gathered from several sources including SO, ubuntu.org, asklinux.org and many other; and of course by trying several procedures)

Below is what eventually got me through.

NOTE: ensure you uninstall any previous installation of OpenCV, FFMpeg and other dependencies previously installed.

STEP 1 (install ffmpeg and dependencies)


# goto http://sourceforge.net/projects/opencvlibrary/files/opencv-unix/ # download the latest stable opencv such as 2.4.6.1 (http://sourceforge.net/projects/opencvlibrary/files/opencv-unix/2.4.5/opencv-2.4.5.1.tar.gz/download) to current directory (such as home or ~/Document) # cd /opt # tar -xvf /OpenCV-2.4.6.1.tar.gz # cd OpenCV-2.4.6.1 # create a foler under current dir (following previous step, this should be ), called prepare # cd prepare # Copy the following script to gedit and save as install.sh to current dir, this should be /prepare # Check corresponding url used in the script for latest versions of the package and replace as required # Open terminal and navigate to location used above # sudo chmod +x install.sh # ./install 

echo "Removing any pre-installed ffmpeg, x264, and other dependencies (not all the previously installed dependecies)" sudo apt-get remove ffmpeg x264 libx264-dev libvpx-dev librtmp0 librtmp-dev libopencv-dev sudo apt-get update  arch=$(uname -m) if [ "$arch" == "i686" -o "$arch" == "i386" -o "$arch" == "i486" -o "$arch" == "i586" ]; then flag=0 else flag=1 fi  echo "Installing Dependenices" sudo apt-get install autoconf automake make g++ curl cmake bzip2 python unzip \   build-essential checkinstall git git-core libass-dev libgpac-dev \   libsdl1.2-dev libtheora-dev libtool libva-dev libvdpau-dev libvorbis-dev libx11-dev \   libxext-dev libxfixes-dev pkg-config texi2html zlib1g-dev  echo "downloading yasm (assembler used by x264 and FFmpeg)" # use git or tarball (not both) wget http://www.tortall.net/projects/yasm/releases/yasm-1.2.0.tar.gz tar xzvf yasm-1.2.0.tar.gz cd yasm-1.2.0  echo "installing yasm" ./configure make sudo make install cd ..  echo 'READ NOTE BELOW which was extracted from http://wiki.serviio.org/doku.php?id=build_ffmpeg_linux' echo 'New version of x264 contains by default support of OpenCL. If not installed or without sense (example Ubuntu 12.04LTS on VMWare) add to configure additional option --disable-opencl. Without this option ffmpeg could not be configured (ERROR: libx264 not found).'  echo "downloading x264 (H.264 video encoder)" # use git or tarball (not both) # git clone http://repo.or.cz/r/x264.git or git clone git://git.videolan.org/x264.git cd x264 # wget ftp://ftp.videolan.org/pub/videolan/x264/snapshots/x264-snapshot-20130801-2245-stable.tar.bz2 # tar -xvjf x264-snapshot-20130801-2245-stable.tar.bz2 # cd x264-snapshot-20130801-2245-stable/  echo "Installing x264" if [ $flag -eq 0 ]; then ./configure --enable-static --disable-opencl else ./configure --enable-shared --enable-pic --disable-opencl fi make sudo make install cd ..  echo "downloading fdk-aac (AAC audio encoder)" # use git or tarball (not both) git clone --depth 1 git://github.com/mstorsjo/fdk-aac.git cd fdk-aac  echo "installing fdk-aac" autoreconf -fiv ./configure --disable-shared make sudo make install cd ..  echo "installing libmp3lame-dev (MP3 audio encoder.)" sudo apt-get install libmp3lame-dev  echo "downloading libopus (Opus audio decoder and encoder.)" wget http://downloads.xiph.org/releases/opus/opus-1.0.3.tar.gz tar xzvf opus-1.0.3.tar.gz cd opus-1.0.3  echo "installing libopus" ./configure --disable-shared make sudo make install cd ..  echo "downloading libvpx VP8/VP9 video encoder and decoder)" # use git or tarball (not both) git clone --depth 1 http://git.chromium.org/webm/libvpx.git cd libvpx # wget http://webm.googlecode.com/files/libvpx-v1.1.0.tar.bz2 (this seems not to be update, but can still be used if the fedoraproject link below is not available)) # wget http://pkgs.fedoraproject.org/repo/pkgs/libvpx/libvpx-v1.2.0.tar.bz2/400d7c940c5f9d394893d42ae5f463e6/libvpx-v1.2.0.tar.bz2 # tar xvjf libvpx-v1.2.0.tar.bz2 # cd libvpx-v1.2.0  echo "installing libvpx" ./configure --disable-examples make sudo make install cd ..  sudo ldconfig  echo "downloading ffmpeg" # git clone http://repo.or.cz/r/ffmpeg.git git clone git://source.ffmpeg.org/ffmpeg.git cd ffmpeg/ # wget http://ffmpeg.org/releases/ffmpeg-2.0.tar.bz2 # tar -xvjf ffmpeg-2.0.tar.bz2 # cd ffmpeg-2.0/  echo "installing ffmpeg"  if [ $flag -eq 0 ]; then ./configure --enable-gpl --enable-libass --enable-libfdk-aac --enable-libopus --enable-libfaac --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libtheora --enable-libvorbis --enable-libx264 --enable-libxvid --enable-nonfree --enable-postproc --enable-version3 --enable-x11grab --enable-libvpx else ./configure --enable-gpl --enable-libass --enable-libfdk-aac --enable-libopus --enable-libfaac --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libtheora --enable-libvorbis --enable-libx264 --enable-libxvid --enable-nonfree --enable-postproc --enable-version3 --enable-x11grab --enable-libvpx --enable-shared fi  make sudo make install hash -r  cd .. # move up one level to prepare folder cd .. # move up one level to opencv folder  echo "Checking to see if you're using your new ffmpeg" ffmpeg 2>&1 | head -n1  sudo ldconfig 

STEP 2 (Install OpenCV and necessary packages)

echo "Installing Dependenices"     sudo apt-get install libtiff4-dev libjpeg-dev libjasper-dev  echo "installing Video I/O libraries, support for Firewire video cameras and video streaming libraries" sudo apt-get install libav-tools libavcodec-dev libavformat-dev libswscale-dev libdc1394-22-dev libxine-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev libv4l-dev v4l-utils v4l-conf  echo "installing the Python development environment and the Python Numerical library" sudo apt-get install python-dev python-numpy  echo "installing the parallel code processing library (the Intel tbb library)" sudo apt-get install libtbb-dev  echo "installing the Qt dev library" sudo apt-get install libqt4-dev libgtk2.0-dev  echo "installing other dependencies (if need be it would upgrade current version of the packages)" sudo apt-get install patch subversion ruby librtmp0 librtmp-dev libfaac-dev libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev libvpx-dev libxvidcore-dev  echo installing optional packages" sudo apt-get install libdc1394-utils libdc1394-22-dev libdc1394-22 libjpeg-dev libpng-dev libtiff-dev libjasper-dev 

STEP 3 (run ldconfig)

# Open a new terminal window # Open /etc/ld.so.conf and check,  # if the paths "/usr/lib" and "/usr/local/lib" including the quote exist in the file. If not, add them manually or by     sudo echo "/usr/local/lib" >> /etc/ld.so.conf     sudo echo "/usr/lib" >> /etc/ld.so.conf # execute the following     sudo ldconfig 

STEP 4a (Build & Install for OS Usage)

# still ensure you haven't close the new terminal window open in STEP 3 # execute the following mkdir os_build cd os_build cmake -DCMAKE_BUILD_TYPE=RELEASE -DCMAKE_INSTALL_PREFIX=/usr/local -DBUILD_NEW_PYTHON_SUPPORT=ON -DINSTALL_PYTHON_EXAMPLES=ON -DWITH_TBB=ON -DWITH_V4L=ON -DINSTALL_C_EXAMPLES=ON -DBUILD_EXAMPLES=ON -DWITH_QT=ON -DWITH_OPENGL=ON -DWITH_OPENCL=ON -DWITH_EIGEN=ON -DWITH_OPENEXR=ON ..      make     sudo make install  # add the following to user environment variable ~/.bashrc     export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/local/lib     export PKG_CONFIG_PATH=${PKG_CONFIG_PATH}:/usr/local/lib/pkgconfig # execute the following     sudo ldconfig # start to use and enjoy opencv, it should have been install into any of these locations #   /usr/local/include/opencv2, /usr/local/include/opencv, /usr/include/opencv, /usr/include/opencv2, /usr/local/share/opencv #   /usr/local/share/OpenCV, /usr/share/opencv, /usr/share/OpenCV, /usr/local/bin/opencv*, /usr/local/lib/libopencv* 

STEP 4b (Build for Java Usage): OPTIONAL

# still ensure you haven't close the new terminal window open in STEP 4 # execute the following     cd ..     mkdir java_build     cd java_build     cmake -DCMAKE_BUILD_TYPE=RELEASE -DBUILD_SHARED_LIBS=OFF -DINSTALL_PYTHON_EXAMPLES=ON -DWITH_TBB=ON -DWITH_V4L=ON -DINSTALL_C_EXAMPLES=ON -DBUILD_EXAMPLES=ON -DWITH_QT=ON -DWITH_OPENGL=ON -DWITH_OPENCL=ON -DWITH_EIGEN=ON -DWITH_OPENEXR=ON ..      make  # You can check the "java_build/bin" directory to locate the jar and libopencv_java.so file for your development # As stated in the docs, the Java bindings dynamic library is all-sufficient, i.e. doesn’t depend on other OpenCV libs, but includes all the OpenCV code inside 

STEP 5 (install v4l: Note: installing v4l-utils after opencv installation works for Ubuntu 12.04.2 & OpenCV 2.4.6.1)

# still ensure you haven't close the new terminal window open in STEP 3 # goto http://www.linuxtv.org/downloads/v4l-utils # download the latest v4l such as v4l-utils-0.9.5.tar.bz2 # copy the downloaded file to the current terminal dir (following previous step, this should be /prepare) # execute the following     tar -xvjf v4l-utils-0.9.5.tar.bz2     cd v4l-utils-0.9.5/     ./configure     make     sudo make install     cd ..     cd .. # (to go to )     sudo ldconfig 

Worth Noting

# To check the path where opencv & other lib files are stored, do:   pkg-config --cflags opencv      (output will come as)     -I/usr/include/opencv    pkg-config --libs opencv      (output will come as)     -lopencv_core -lopencv_imgproc -lopencv_highgui -lopencv_ --ml -lopencv_video -lopencv_features2d -lopencv_calib3d -lopencv_objdetect -lopencv_contrib -lopencv_legacy -lopencv_flann  # The above paths are needed to compile your opencv programs, as given in the next illustration.  # write a simple C program to test, by saving below program in a file named DisplayImage.c  #include      #include       int main(int argc, char *argv[]) {         IplImage* img=0; /* pointer to an image */         printf("Hello\n");          if(argv[1] != 0)             img = cvLoadImage(argv[1], 0); // 1 for color         else             printf("Enter filename\n");          if(img != 0) {             cvNamedWindow("Display", CV_WINDOW_AUTOSIZE); // create a window             cvShowImage("Display", img); // show image in window             cvWaitKey(0); // wait until user hits a key             cvDestroyWindow("Display");         }         else             printf("File not found\n");          return 0;     }  # write a simple C++ program to test, by saving below program in a file named DisplayImage.cpp  #include  #include  #include   using namespace cv;  int main( int argc, char** argv ) {   Mat image;   image = imread( argv[1], 1 );    if( argc != 2 || !image.data )     {       printf( "No image data \n" );       return -1;     }    namedWindow( "Display Image", CV_WINDOW_AUTOSIZE );   imshow( "Display Image", image );    waitKey(0);    return 0; }  # To compile & run :    g++  `pkg-config --cflags --libs opencv` && ./a.out img  or    g++ -I/usr/include/opencv -I/usr/local/include -lopencv_core -lopencv_highgui -lopencv_ml -lopencv_imgproc -lopencv_video -lopencv_features2d -lopencv_calib3d -lopencv_objdetect -lopencv_contrib -lopencv_legacy -lopencv_flann -lopencv_nonfree  && ./a.out img  where “img” is the name of any image with extension within the same folder . You should be able to see “Hello” and the image in a different window.  If this runs, Congrats! now you can run any C/C++ program with opencv lib.   # Now lets simplify the above big command by making a shortcut for it: go to your local home directory(cd /home/) and open the .bashrc file using gedit(the file will be hidden). Append the following to the file:    alias gcv="g++ -I/usr/include/opencv -I/usr/local/include -lopencv_core -lopencv_highgui -lopencv_ml -lopencv_imgproc -lopencv_video -lopencv_features2d -lopencv_calib3d -lopencv_objdetect -lopencv_contrib -lopencv_legacy -lopencv_flann -lopencv_nonfree"  and save. Close the terminal and open it again.(as this process requires relogin of the terminal)  # Now, go to directory containing a sample program & do    gcv  && ./a.out  or    gcv      ./a.out input_img.jpg 

As you can see the commands now become similar to $cc filename.c, $./a.out which are used normally for compiling and executing C/C++ programs.


Some ways to check whether all lib files are installed-

apt-cache search opencv 

returns:

libcv-dev - Translation package for libcv-dev libcv2.3 - computer vision library - libcv* translation package libcvaux-dev - Translation package for libcvaux-dev libcvaux2.3 - computer vision library - libcvaux translation package libhighgui-dev - Translation package for libhighgui-dev libhighgui2.3 - computer vision library - libhighgui translation package libopencv-calib3d-dev - development files for libopencv-calib3d libopencv-calib3d2.3 - computer vision Camera Calibration library libopencv-contrib-dev - development files for libopencv-contrib libopencv-contrib2.3 - computer vision contrib library libopencv-core-dev - development files for libopencv-core libopencv-core2.3 - computer vision core library libopencv-dev - development files for opencv libopencv-features2d-dev - development files for libopencv-features2d libopencv-features2d2.3 - computer vision Feature Detection and Descriptor Extraction library libopencv-flann-dev - development files for libopencv-flann libopencv-flann2.3 - computer vision Clustering and Search in Multi-Dimensional spaces library libopencv-gpu-dev - development files for libopencv-gpu libopencv-gpu2.3 - computer vision GPU Processing library libopencv-highgui-dev - development files for libopencv-highgui libopencv-highgui2.3 - computer vision High-level GUI and Media I/O library libopencv-imgproc-dev - development files for libopencv-imgproc libopencv-imgproc2.3 - computer vision Image Processing library libopencv-legacy-dev - development files for libopencv-legacy libopencv-legacy2.3 - computer vision legacy library libopencv-ml-dev - development files for libopencv-ml libopencv-ml2.3 - computer vision Machine Learning library libopencv-objdetect-dev - development files for libopencv-objdetect libopencv-objdetect2.3 - computer vision Object Detection library libopencv-video-dev - development files for libopencv-video libopencv-video2.3 - computer vision Video analysis library opencv-doc - OpenCV documentation and examples python-opencv - Python bindings for the computer vision library 

回答1:

Thanks for the information. I tried to run these commands but encountered several problems. I am using a brand new Ubuntu 12.04 install.

1) The first apt-get remove command asked me if I wanted to remove a lot of things that I wasn't comfortable removing, like LibreOffice. I didn't remove anything in this step, which I figured would be okay, since the only program I've installed is Java SDK and JRE. Why did you opt for such a large list of programs to remove?

2) Adding sudo to the git and tar commands was necessary.

3) When installing opus and ffmpeg, there were many error messages for the ./configure command because of a lack of permission for writing and ultimately the configurations failed.

Anyways, just thought I would log these problems on the post in the hopes that it will improve the procedure listed above.



回答2:

To install OpenCV on Ubuntu from http://namhuy.net/1205/how-to-install-opencv-on-ubuntu.html

$ su - # apt-get update # apt-get install build-essential # apt-get install libavformat-dev # apt-get install x264 v4l-utils ffmpeg # apt-get install libcv2.3 libcvaux2.3 libhighgui2.3 python-opencv opencv-doc libcv-dev libcvaux-dev libhighgui-dev 


回答3:

Here is my blog post on installing OpenCV with it's many dependencies ie Cuda, OpenNI, Gstreamer, ffmpeg, QT5, ... ect. http://drewski1992.blogspot.com/2014/04/install-opencv-24x-with-cuda-55-or-6.html

Following this should give you a full OpenCV build.



回答4:

thanks for the info. I installed everything in Ubuntu 13.04 and ran into a problem when trying to use the gcv shortcut. Using the

g++ `pkg-config --cflags --libs opencv` 

shortcut works perfectly. Previously I had to link all the libraries manually in a Makefile so this is still much better. Appreciate you sharing the info, thanks!



易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!