ubuntu 12 下安裝配置編譯使用opencv 2.3.0 全過程

     經過幾天的努力,初步完成了對opencv2.3.0的安裝和使用。記錄下過程希望對他人有幫助。

     首先,的步驟當然是下載和編譯opencv,根據這位大神提供的思路http://www.samontab.com/web/2010/04/installing-opencv-2-1-in-ubuntu/,安裝和編譯還是比較輕鬆。主要有以下幾步:

     1、下載opencv解壓opencv

     2、進入解壓後的目錄,建立一個目錄用來安放編譯後的文件,目錄的名字自己取,我去的名字是release

     3、不記得哪個版本的opencv之後,編譯前的配置不再用configure文件了。而改用cmake ,所有趕緊看看自己的系統中是否安裝了cmake 沒有的話,趕緊安裝吧。

     4、進去我們剛纔創建的目錄中,運行cmake

     5、之後就是make && make install 了。

     這裏特別提示你需要安裝一個庫,不然在運行的時候你就會發現一個問題

OpenCV Error: Unspecified error (The function is not implemented. Rebuild the library with Windows, GTK+ 2.x or Carbon support. If you are on Ubuntu or Debian, install libgtk2.0-dev and pkg-config, then re-run cmake or configure script) in cvNamedWindow, file /home/bush/OpencvSrc/OpenCV-2.3.0/modules/highgui/src/window.cpp, line 275
terminate called after throwing an instance of 'cv::Exception'
  what():  /home/bush/OpencvSrc/OpenCV-2.3.0/modules/highgui/src/window.cpp:275: error: (-2) The function is not implemented. Rebuild the library with Windows, GTK+ 2.x or Carbon support. If you are on Ubuntu or Debian, install libgtk2.0-dev and pkg-config, then re-run cmake or configure script in function cvNamedWindow

      問題的原因信息已經提示了要安裝libgtk2.0-dev and pkg-config,這個不難,鍵入以下的命令就可以了。pkg-config已經在系統中安裝了。

     以上幾個步驟對應的命令是

     1、

wget http://nchc.dl.sourceforge.net/project/opencvlibrary/opencv-unix/2.3/OpenCV-2.3.0.tar.bz2;
tar -xvf OpenCV-2.3.0.tar.bz2

    2、

cd OpenCV-2.3.0
sudo mkdir relese
cd relese
sudo apt-get install libgtk2.0-dev

     3、這裏就需要看看你的系統中是否安裝了cmake了,如果沒有安裝,就請自行安裝吧命令也很簡單

sudo apt-get install cmake
     我一般將安裝和編譯的過程寫在腳本當中,
#########################################################################
# File Name: Install_cmake.sh
# Author: ma6174
# mail: [email protected]
# Created Time: 2014年02月28日 星期五 13時32分53秒
#########################################################################
#!/bin/bash


##############################################
# FunctionName:echocolor
# Author: bush2582
# Role:the output will have color
# Created Time: 
##############################################
echocolor(  )
{
	  echo -e "\e[0;33m${@}\e[0m";
}



##############################################
# FunctionName:InstallGCC
# Author: bush2582
# Role:check g++ is already in system
# Created Time: 
##############################################
function InstallGCC (  )
{
	
	which g++;
	if [ $? -eq 1 ];
	then
		read -p " g++ is not installed in this system do you want to install? (Y/y/n/N) " ynInstall_GCC;
		
		if [ $ynInstall_GCC = "Y" ] || [ $ynInstall_GCC = "y" ] ;
		then
			#echo " now we will install g++ ";
			echocolor "now we will install g++"
			sudo apt-get install g++;
		fi
	else
		echocolor "g++ already install in this system ";
	fi
}
##############################################
# FunctionName:InstallCmake
# Author: bush2582
# Role:install Cmake
# Created Time: 
##############################################

function InstallCmake(  )
{
	  InstallGCC;
	  echocolor " now we will star the program that CMake is installed in this system ";
	  cd cmake-2.8.0;
	  ./configure;
	  sudo make;
	  sudo make install;
	  exit 0;
}




#########################################################################
read -p "Do you want to download Cmake? (Y/y/n/N)?" downyn
if [ $downyn = "Y" ] || [ $downyn = "y" ];
then 
	wget http://down1.chinaunix.net/distfiles/cmake-2.8.0.tar.gz;
	echocolor "now Staring Tar cmake";
	tar -xvf cmake-2.8.0.tar.gz;
else
	echocolor "now Staring Tar cmake";
	tar -xvf cmake-2.8.0.tar.gz;
fi

read -p " Do you want to install camke now (Y/y/n/N)? " yn
if [ $yn = "y"  ] || [ $yn = "Y"  ] ;
then	
	InstallCmake;
else
	exit 0;
fi
      3、這裏的/usr/local/opencv是我自定義在系統中安裝的路徑
sudo cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local/opencv -D BUILD_PYTHON_SUPPORT=ON ..
 
      4、配置後自然就是make 和make install 了
sudo make 
sudo make install

      當然你可以選擇腳本的方法來安裝,

#######################################################################
# File Name: LoadOpencv.sh
# Author: ma6174
# mail: [email protected]
# Created Time: 2014年02月28日 星期五 10時46分11秒
#########################################################################
#!/bin/bash

#--------------------------------------------#
# FunctionName:echocolor
# Author: bush2582
# Role:the output will have color
# Created Time: 
#--------------------------------------------#
echocolor(  )
{
	  echo -e "\e[0;33m${@}\e[0m";
	  
}


read -p "Do you want to download Opencv-2.3.0? (Y/N)" DownLoadOpencv
if [ $DownLoadOpencv = "Y" ];
then
	echocolor "now Staring downLoad Opencv2.3.0 ";
	wget http://nchc.dl.sourceforge.net/project/opencvlibrary/opencv-unix/2.3/OpenCV-2.3.0.tar.bz2;
	echocolor "Staring tar OpenCV-2.3.0.tar.bz2 "
	tar -xvf OpenCV-2.3.0.tar.bz2
else
	tar -xvf OpenCV-2.3.0.tar.bz2
	echocolor "Staring tar OpenCV-2.3.0.tar.bz2 "
fi

cd OpenCV-2.3.0
sudo mkdir relese
cd relese
sudo apt-get install libgtk2.0-dev
read -p "Please input Dir which you want to install " Dir
sudo cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=$Dir -D BUILD_PYTHON_SUPPORT=ON ..
read -p  "now we will star opencv make&&install  in $Dir .Do you want to continue?( Y/N )  " GoOn
if [ $GoOn = "Y"  ] ;
then
	sudo make 
	sudo make install
else
	exit 0;
fi   

     這裏,opencv的安裝算是完成了,不過要怎麼用它編譯我自己的源代碼呢?

     需要做一些配置工作了。需要做如下的幾步工作

     1.添加庫路徑

sudo vim /etc/ld.so.conf.d/opencv.conf
/usr/local//opencv/lib(添加內容)

    2.更新系統庫

$sudo ldconfig

    3.設置環境變量

export PKG_CONFIG_PATH=/usr/local/opencv/lib/pkgconfig:$PKG_CONFIG_PATH
    你也可以選擇腳本,

#########################################################################
# File Name: ConfigureOpencv.sh
# Author: bush2582
# mail: [email protected]
# Created Time: 2014年03月02日 星期日 15時45分54秒
#########################################################################
#!/bin/bash
ConfFileDir="/etc/ld.so.conf.d/opencv.conf"
OpencvLibDir="/usr/local/opencv/lib"
BashDir="/etc/bash.bashrc"
PKG="PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/opencv/lib/pkgconfig"
PKGExport="export PKG_CONFIG_PATH"
sudo file $ConfFileDir;
if [ $? -eq 1 ] ;
then
	sudo touch $ConfFileDir;
fi

sudo grep -x $OpencvLibDir $ConfFileDir
if [ $? -eq 1  ] ;
then
	sudo echo $OpencvLibDir >> $ConfFileDir;
fi

sudo ldconfig

sudo grep -x $PKG $BashDir

if [ $? -eq 1  ] ;
then
	sudo echo $PKG >> $BashDir;
	sudo echo $PKGExport >> $BashDir;
fi


sudo grep -x $PKG $BashDir
source $BashDir

這裏說明幾點:1、使用>> 可以在文件的最後累加文字。2、touch可以用來創建一個0字節的文件。3、grep -x 可以用來嚴格匹配文件中的數據。4、file 命令用來查看文件是否存在。(這裏需要做完系統環境的配置後,重新打開一個命令行。關閉原來的命令行)

     好了現在opencv的系統環境配置好了,那麼我們怎麼編譯呢?當然用g++ ,不過我覺得輸入一大堆命令太麻煩,索性寫了個makefile 文件,

OBJS=  test.o
CC=g++
INCLUDE=  -I/usr/local/opencv/include -I/usr/local/opencv/include/opencv -I/home/bush/prj/linuxchuankou/include
LIB= -L /usr/local/opencv/lib `pkg-config --libs opencv`
Test:$(OBJS)
	$(CC) -o   Test     $(OBJS)   $(LIB)
test.o:test.cpp 
	$(CC) -c -g  test.cpp       $(INCLUDE)
clean:
	-rm Test $(OBJS)
#`pkg-config --libs opencv` -I/usr/local/OpenCV-2.4.2/build/include/opencv2-lopencv_highgui -lopencv_core

     這是我的測試源碼

/*************************************************************************
    > File Name: test.cpp
    > Author: bush2582
    > Mail: [email protected] 
    > Created Time: 2014年03月02日 星期日 15時23分01秒
 ************************************************************************/

#include<iostream>
#include "cv.h"
#include "highgui.h"
using namespace std;
int main (  )  
{
	  IplImage * img=cvLoadImage("1.png",0);
	  cvNamedWindow("img",1  );
	  cvShowImage("img",img  );
	  cvWaitKey(0);
	  cvDestroyWindow("img");
	  cvReleaseImage(&img);
	  return 0;
}

      在命令行中鍵入make 就可以編譯完成了哈。

      以上就是opencv2.3.0的編譯安裝和使用過程,希望對你有幫助哦。

轉載請著名地址哦

http://blog.csdn.net/bush2582/article/details/20299615
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章