2013-08-08 13 views
10

Użyłem wcześniej OpenCV 2.4.5 z pewnymi konfiguracjami i pakietami na Ubuntu 12.04.1, ale miałem problemy z uaktualnieniem do OpenCV 2.4.6.1 na Ubuntu 12.04.2Ustawianie/instalowanie OpenCV 2.4.6.1+ na Ubuntu 12.04.02

Chciałbym podzielić się pomysłami (zestawienie godne uwagi informacje zebrane z różnych źródeł, w tym SO, ubuntu.org, asklinux.org i wiele innych; i oczywiście starając kilka procedur)

Poniżej jest co ostatecznie mnie przez to przeszedł.

UWAGA: upewnij się, że odinstalowałeś poprzednią instalację wcześniej zainstalowanych OpenCV, FFMpeg i innych zależności.

etapu 1 (zainstalować ffmpeg i zależności)


# 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 <path-to-download-folder>/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 <opencv-dir>), called prepare 
# cd prepare 
# Copy the following script to gedit and save as install.sh to current dir, this should be <opencv-dir>/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 

ETAP 2 (Instalowanie OpenCV oraz niezbędne pakiety)

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 

ETAP 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 

KROK 4a (Build & Instalacja dla OS Wykorzystanie)

# 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* 

etap 4b (Build do użycia Java): opcjonalnie

# 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 

Krok 5 (Zainstaluj v4l: Uwaga: Instalacja v4l -utils po instalacji opencv działa dla 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 <opencv-dir>/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 <opencv-dir>) 
    sudo ldconfig 

Warto zauważyć

# 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 <stdio.h> 
    #include <opencv2/highgui/highgui.hpp> 

    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 <stdio.h> 
#include <opencv2/opencv.hpp> 
#include <opencv2/highgui/highgui.hpp> 

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++ <filename: e.g. DisplayImage.c or DisplayImage.cpp> `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 <filename: e.g. DisplayImage.c or DisplayImage.cpp> && ./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 <filename: e.g. DisplayImage.c or DisplayImage.cpp> && ./a.out 

or 



gcv <filename: e.g. DisplayImage.c or DisplayImage.cpp> 
    ./a.out input_img.jpg 

Jak widać polecenia stają się teraz podobna do $ cc filename.c, $./A.out, które są zwykle używane do sporządzania i wykonywania C/C++.


Kilka sposobów, aby sprawdzić, czy wszystkie pliki lib są installed-

apt-cache search opencv 

powraca:

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 

Odpowiedz

1

Dzięki za informacje. Próbowałem uruchomić te polecenia, ale napotkałem kilka problemów. Używam zupełnie nowej wersji Ubuntu 12.04.

1) Pierwsze polecenie apt-get remove zapytało mnie, czy chcę usunąć wiele rzeczy, których nie było mi wygodnie usuwać, takich jak LibreOffice. Nie usunąłem niczego w tym kroku, co według mnie byłoby w porządku, ponieważ jedynym zainstalowanym programem jest Java SDK i JRE. Dlaczego zdecydowałeś się na usunięcie tak dużej listy programów?

2) Konieczne było dodanie sudo do poleceń git i tar.

3) Podczas instalowania opus i ffmpeg było wiele komunikatów o błędach dla polecenia ./configure z powodu braku uprawnień do zapisu, a ostatecznie konfiguracje nie powiodły się.

W każdym razie, pomyślałem, że zarejestruję te problemy na stanowisku w nadziei, że poprawi to procedurę wymienioną powyżej.

0

dzięki za informacje. Zainstalowałem wszystko w Ubuntu 13.04 i napotkałem problem podczas próby użycia skrótu gcv. Korzystanie ze skrótu działa doskonale. Poprzednio musiałem ręcznie połączyć wszystkie biblioteki w pliku Makefile, więc jest to znacznie lepsze. Doceniam dzielenie się informacjami, dzięki!

0

Aby zainstalować OpenCV na Ubuntu z 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