1. 程式人生 > >關於Ubuntu16.04安裝opencv2.4.13及編譯執行opencv程式的相關問題

關於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/pkgconfig

export 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

即可看到圖片顯示,安裝完成。