安装过程
要在ubuntu中正确的安装及配置OpenCV 2.3.1, 请确保完成一下步骤.
执行以下指令,删除ffmpeg and x264 的任何旧版本,如果以前没有安装也没有问题。
sudo apt-get remove ffmpeg x264 libx264-dev
下载安装x264和ffmpeg所有的依赖:
sudo apt-get update
sudo apt-get install build-essential checkinstall git cmake libfaac-dev libjack-jackd2-dev libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev libsdl1.2-dev libtheora-dev libva-dev libvdpau-dev libvorbis-dev libx11-dev libxfixes-dev libxvidcore-dev texi2html yasm zlib1g-dev
下载并安装gstreamer:
sudo apt-get install libgstreamer0.10-0 libgstreamer0.10-dev gstreamer0.10-tools gstreamer0.10-plugins-base libgstreamer-plugins-base0.10-dev gstreamer0.10-plugins-good gstreamer0.10-plugins-ugly gstreamer0.10-plugins-bad gstreamer0.10-ffmpeg
Yasm
Yasm is an assembler used by x264 and FFmpeg.
Ubuntu 13.04 and Mint 15 users can alternatively install the yasm package from the repository instead of compiling.
cd ~/ffmpeg_sources 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 ./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" make make install make distclean . ~/.profile
下载并安装x264:
下载一个最近的stable snapshot of x264版本,下载地址为:ftp://ftp.videolan.org/pub/videolan/x264/snapshots/. 下载的版本并没有严格的要求。
执行以下指令配置并build x264 :
tar xvf x264-snapshot-20120214-2422-stable.tar.bz2
cd x264-snapshot-20120214-2422-stable/
./configure --enable-static
make
sudo make install
下载并安装ffmpeg.
下载ffmpeg 0.8.x ,地址:http://ffmpeg.org/download.html. 注意: OpenCV2.3.1以前的版本需要ffmpeg 0.7.x.
执行以下指令配置并build ffmpeg :
tar xvf ffmpeg-0.8.10.tar.bz2
cd ffmpeg-0.8.10/
./configure --enable-gpl --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
make
sudo make install
下载并安装gtk :
sudo apt-get install libgtk2.0-0 libgtk2.0-dev
下载并安装libjpeg :
sudo apt-get install libjpeg62 libjpeg62-dev
下载并安装v4l (video for linux).
下载v4l-utils-0.8.5.tar.bz2 from http://www.linuxtv.org/downloads/v4l-utils/
Build v4l :
make
sudo make install
下载并安装OpenCV.
下载OpenCV 2.3.1 from http://sourceforge.net/projects/opencvlibrary/files/
执行以下命令:
tar xvf OpenCV-2.3.1.tar.bz2
cd OpenCV-2.3.1/
mkdir build
cd build
cmake ..
make
sudo make install
配置Linux.openCV参数设置
在/etc/ld.so.conf.d/opencv.conf文件中加入一行:/usr/local/lib ,
可能会没有opencv.conf这个文件,那我们就自己创建一个:
sudo gedit/etc/ld.so.conf.d/opencv.conf。
上面那一步昨晚之后记得使用下面这条命令(这也是原文没有写的):
sudo ldconfig
在 /home/.bashrc中加入:
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH
重启.
在完成了上面的步骤之后,应该就能编译OpenCV应用程序了。
cd OpenCV-2.3.1/samples/c
执行下面这个:
sh build_all.sh
然后就可以运行sample了。或使用以下命令编译自己的程序:
(原文)g++ `pkg-config opencv --cflags` `pkg-config opencv --libs` my_code.cpp -o my_code
(我使用的)g++ drawing.c `pkg-config opencv --libs --cflags opencv` -o drawing
********************************************************************##########################################
#************************************************************************#######################################
1,安装libgtk2.0-dev and pkg-config
终端运行 sudo apt-get install libgtk2.0-dev pkg-config
2.下载OpenCV-2.3.1(到openCV官网下载即可)
cd 命令进入相应的下载目录。依次运行下列命令
$ tar xf OpenCV-2.3.1.tar.bz2
$ cd OpenCV-2.3.1
3.终端运行
$ mkdir build
$ cd build
$ cmake .. 此处为cmake空格后面两个点。
4 依次运行
$ make
$ sudo make install
此时编译成功。
5 配置必要的库。
运行
$ sudo
gedit /etc/ld.so.conf.d/opencv.conf
添加 /usr/
local
/lib
到文件中
6 运行
$ sudo
ldconfig
7 运行
sudo
gedit /etc/
bash
.bashrc,
添加下面两行到文件的末尾并保存。
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH
8 运行samples
$ cd ~
$ mkdir openCV_samples
$ cp OpenCV-2.3.1/samples/c/* openCV_samples
$ cd openCV_samples/
$ chmod +x build_all.sh
$ ./build_all.sh
$./one_way_sample . ./one_way_train_0000.jpg ./one_way_train_0001.jpg
运行结果
8 编写程序(图像二值化)
- 1 #include "cv.h"
- 2 #include "cxcore.h"
- 3 #include "highgui.h"
- 4 #include <iostream>
- 5
- 6 using namespace std;
- 7
- 8 int main (int argc, char *argv[])
- 9 {
- 10 IplImage* img = cvLoadImage(argv[1], -1);
- 11 IplImage* biimg = cvCreateImage(cvGetSize(img), img->depth, img->nChannels);
- 12 CvScalar s;
- 13 int sum = 0;
- 14 for (int i = 0;i < img->height;i++)
- 15 {
- 16 for (int j = 0;j < img->width;j++)
- 17 {
- 18 s = cvGet2D(img, i, j);
- 19 cout << s.val[0] << " " << s.val[1] << " " << s.val[2] <<endl;
- 20 sum = (s.val[0] + s.val[1] + s.val[2]) / 3;
- 21 if (sum > 128)
- 22 s.val[0] = s.val[1] = s.val[2] = 255;
- 23 else
- 24 s.val[0] = s.val[1] = s.val[2] = 0;
- 25
- 26 cvSet2D(img, i, j, s);
- 27 }
- 28 }
- 29 cvCopy(img, biimg);
- 30 cvSaveImage("combibi.JPG", biimg);
- 31 cvNamedWindow("imagebinary");
- 32 cvShowImage("imagebinary", biimg);
- 33 cvWaitKey(0);
- 34 cvDestroyWindow("imagebinary");
- 35 cvReleaseImage(&img);
- 36 cvReleaseImage(&biimg);
- 37 return 0;
- 38 }
编译
$ gcc erzhihua.cpp -o erzhi `pkg-config --cflags --libs opencv`
(疑问:编译时运行 gcc `pkg-config --cflags --libs opencv` erzhihua.cpp -o erzhi就会报错,还不知道为什么??)
运行
$ ./erzhi lena.jpg
运行结果: