關於Ubuntu16.04安裝opencv2.4.13及編譯執行opencv程式的相關問題
因為學習的一些原因,開始接觸opencv,但是學習之路沒有堅持下來,電腦前前後後也出了很多毛病,重灌了很多次系統,每次重灌都需要重新安裝opencv,也碰到了很多問題,這次重新安裝記錄一下,以備不時之需。
1.安裝前準備;
安裝GCC:
sudo apt-get install build-essential
安裝CMake
sudo apt-get install cmake
安裝Git(可選)
sudo apt-get install git
安裝GTK開發版
sudo apt-get install libgtk2.0-dev
安裝pkg-config
sudo apt-get install pkg-config
安裝媒體包:
sudo apt-get install ffmpeg
安裝一些依賴關係:
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 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 libgtk2.0-dev libavcodec-dev
libavformat-dev libjpeg.dev libtiff5.dev libswscale-dev libjasper-dev
從網上教程找到的一些依賴關係包,可能版本號不相容,可以按照報錯提示的版本號修改一下,問題不大,注意看報錯的資訊。
2.下載解壓安裝包
從opencv官網上下載,直接百度opencv,點選downloads,會有各種系統的,各種版本的,可以下載最新的linux版,網站進去和下載的速度都挺慢的。
下載完成後,進入相應資料夾,例如opencv-2.4.13.zip下載到了Downloads資料夾裡
cd Downloads
unzip opencv-2.4.13.zip
ls
即可看到相應解壓後的opencv-2.4.13資料夾
3.安裝opencv
mkdir release
cd release
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 ..
(此步驟中可能會報錯,看報錯資訊,很有可能是未安裝qt,所以直接
sudo apt-get install qt4-dev-tools qt4-designer qt4-doc qt4-qtconfigqt4-demos qt4-qmake libqt4-sql-MySQL qdevelop
安裝好後即可繼續cmake)
make -j2(時間較長)
sudo make install
4.配置環境
將opencv的庫加入到路徑,從而讓系統可以找到
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/pkgconfigexport PKG_CONFIG_PATH
儲存退出
sudo source /etc/bash.bashrc #使配置生效(該步驟可能會報錯找不到命令,原因是source為root命令
sudo passwd root(設定root密碼,如果之前沒有設定過)
輸入新密碼
su(進入root許可權)
輸入密碼
source /etc/bash.bashrc
exit(退出root)
)
sudo updatedb #更新database
5.編譯試執行
進入/home/program目錄
vim helloworld.cpp
敲入以下程式碼,修改其中的Image Path為/home/program,該目錄下有hello.jpg
#include <stdio.h>
#include <opencv2/opencv.hpp>
using namespace cv;
int main(int argc, char** argv )
{
if ( argc != 2 )
{
printf("usage: DisplayImage.out <Image_Path>\n");
return -1;
}
Mat image;
image = imread( argv[1], 1 );
if ( !image.data )
{
printf("No image data \n");
return -1;
}
namedWindow("Display Image", WINDOW_AUTOSIZE );
imshow("Display Image", image);
waitKey(0);
return 0;
}
採取直接編譯的方式
g++ helloworld.cpp -o helloworld `pkg-config --cflags --libs opencv`(注意ESC下面的`,不是單引號)(注意後面的依賴庫)
編譯通過後再執行
./helloworld hello.jpg
即可看到圖片顯示,安裝完成。