最近要用到字符识别的项目,于是在网上找到一个不错的demo,链接如下:
How-To Install PlateGatewayQt
首先需要PlateGatewayQt需要的相关开发工具包主要有qt,ffmpeg,opencv,tesseract,相关的编译依赖关系如下,以供交叉编译参考:
---------------------------------------------dependency--------------------------------------------------------------
PlateGatewayQt
|----Qt---------------------------------------------dependency--------------------------------------------------------------
|----OpenCV
|----gstreamer
|----ffmpeg
|----libx264|----v4l
|----libfaac
|----libmp3lame
|----libtheora
|----libvorbis
|----libxvid
|----gtk2.x
我们首先安装Qt的开发环境,不过在安装以前我们最好更新一下源:
$ sudo apt-get update
接下来我们需要:1 安装qt的开发工具,这里我们选择安装qtcreator,系统会下载相关的依赖文件,终端下输入:
$ sudo apt-get install qtcreator
qt开发包安装完以后我们开始进行ffmpeg和opencv的编译,这里我们选择源码编译,编译的具体过程参考国外网友的博客:http://www.ozbotz.org/opencv-installation/
2.1 为了避免共享库之间起冲突,我们需要删除之前系统中已经安装过的ffmpeg以及x264的包:
$ sudo apt-get remove ffmpeg x264 libx264-dev
2.2 接下来安装开发x264以及ffmpeg所需要的开发包:
$ 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
2.3 下载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
2.4 下载gtk,这个包和图形界面相关:
$ sudo apt-get install libgtk2.0-0 libgtk2.0-dev
2.5 下载libjpegde>,这个包跟jpeg图像相关:
$ sudo apt-get install libjpeg8 libjpeg8-dev
2.6 在主文件夹下创建一个目录:
$ cd ~ $ mkdir src
2.7 下载x264源代码,编译并且进行安装
a. 作者建议下载最新的稳定版,下载链接:ftp://ftp.videolan.org/pub/videolan/x264 /snapshots/,具体哪个版本并不是特别重要,作者选择的版本是x264-snapshot-20120528-2245- stable.tar.bz2,这里鉴于国内网速不佳,个人推荐使用浏览器下载之后将包放在~/src目录下,然后在终端输入:
$ cd ~/src
$ tar xvf x264-snapshot-20120528-2245-stable.tar.bz2
$ cd x264-snapshot-20120528-2245-stable
b. 进行configure配置(生成makefile)并且编译x264
$ ./configure --enable-static $ make $ sudo make install
2.8 下载并且安装ffmpeg
2.9 下载并且安装最新稳定版的v4l(video for linux),作者使用的0.8.8,下载地址为: http://www.linuxtv.org/downloads/v4l-utils/ ,这个版本没有使用autotools生成,不需要configure,这里鉴于国内网速不佳,个人推荐使用浏览器下载之后将包放在~/src目录下,然后在终端输入:a. 这里请注意,作者的教程安装的是ffmpeg 0.11.1而PlateGatewayQt进行开发的版本是0.6.6所以我们需要下载0.6.6版本,本人一开始安装了0.11.1版本之后在qt中编译出现了error,有几个函数只有在老版本的ffmpeg中才有!下载地址http://ffmpeg.org/download.html,这里鉴于国内网速不佳,个人推荐使用浏览器下载之后将包放在~/src目录下,然后在终端输入:
$ cd ~/src
$ tar xvf ffmpeg-0.6.6.tar.bz2
$ cd ffmpeg-0.6.6
b. 进行configure配置(生成makefile)并且编译ffmpeg
$ ./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 --enable-pthreads
注意对于0.11.1中作者并没有给出“--enable-pthreads"的选项,而对于0.6.6中如果不添加该选项,那么在编译的时候会报错,据 个人猜测这可能是由于ffmpeg0.6.6中没有添加对线程库的支持。配置完毕并且成功生存makefile之后进行编译和安装:
$ make
$ sudo make install
$ cd ~/src
$ tar xvf v4l-utils-0.8.8.tar.bz2 $ cd v4l-utils-0.8.8 $ make $ sudo make install
a. 下载OpenCV2.4.3,地址: http://sourceforge.net/projects/opencvlibrary/files/,这里鉴于国内网速不佳,个人推荐使用浏览器下载之后将包放在~/src目录下,然后在终端输入:2.11 配置Linux
b. 创建build目录并执行make
$ cd ~/src
$ tar xvf OpenCV-2.4.3.tar.bz2
c. 确认cmake输出项中含有如下内容:
$ cd OpenCV-2.4.3/ $ mkdir build $ cd build $ cmake -D CMAKE_BUILD_TYPE=RELEASE ..
d. 编译和安装OpenCV
- found gstreamer-base-0.10
- GTK+ 2.x: YES
- FFMPEG: YES
- GStreamer: YES
- V4L/V4L2: Using libv4l
$ make $ sudo make install
a. 将OpenCV链接库的路径加入linux,对于Red Hat/CentOS来说,可以将
加入/etc/profile或者~/.bashrc
export LD_LIBRARY_PATH=/usr/local/lib
对于Ubuntu来说,请将/usr/local/lib加入到/etc/ld.so.conf.d/opencv.conf,opencv.conf是不存在的需要新建:
$ sudo gedit /etc/ld.so.conf.d/opencv.conf
加入/usr/local/lib之后保存推出即可。接下来更新一下系统库的cache,在终端中输入:
$ sudo ldconfig /etc/ld.so.conf
b. 使用编辑器在/etc/bash.bashrc末尾加上下面两行
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig export PKG_CONFIG_PATH
3 下载并安装tesseract(字模库),在终端中输入:
$ sudo apt-get install tesseract-ocr
4. 下载PlateGatewayQt并编译,下载链接:http://www.dexmac.com/src/PlateGatewayQt_150_src.zip
a. 使用qtcreator打开PlateGatewayQt工程,在PlateGatewayQt.linux.pro中末尾加入
INCLUDEPATH +=./include
b. 在最左边的选项卡中选择“项目”--“构建设置”--“构建步骤--“详情”修改qmake参数,截图如下:
修改之后的参数为:
"DEFINES+=_FILE_OFFSET_BITS=64 _LARGEFILE_SOURCE _ISOC9X_SOURCE __STDC_CONSTANT_MACROS" "LIBS += -L/usr/local/lib -lopencv_legacy -lopencv_core -lopencv_highgui -lopencv_objdetect -lopencv_imgproc /usr/local/lib/libavformat.a /usr/local/lib/libavcodec.a /usr/local/lib/libavutil.a -lz -lm -lbz2 -rdynamic -Wl,-rpath,/usr/local/lib -llept -ltesseract -lmp3lame -lx264 -lva -lfaac -lopencore-amrnb -lopencore-amrwb -ltheoradec -ltheoraenc -lvorbisenc -lvorbis -lxvidcore"
c. 编译过程中会提示找不到一些链接库,这里再安装上即可:
sudo apt-get install libbz2-dev libleptonica-dev libtesseract-dev
5. 运行PlateGatewayQt,下载测试视频,地址为:plate_test.avi
截图如下:
demo演示完成!^_^
本文转自博客园知识天地的博客,原文链接:Ubuntu12.04上编译PlateGatewayQt,如需转载请自行联系原博主。