Step1: 硬件软件准备

硬件列表:

- Digilent Zybo Board

- Vivado 2014.1 Webpack

- USB网络摄像头

- VGA TFT显示器

- 两个Digilent JoyStick模块

- micro SD卡(至少4GB)

- 键盘

- 鼠标

- USB HUB


所需软件:

- Xilyinx by Xilybus

- OpenCV


Step2: 安装操作系统并配置硬件

第一步是在Zybo板上安装操作系统。我们选择的系统是Xillybus的Xillinux,它是针对ZYNQ开发平台,基于Linux的操作系统改进的Ubuntu 12.04发布版。


首先,您需要下载两个文件:

- 适用于您的主板的启动分区工具包 

- SD卡图像

下载之后的操作步骤可以参考:http://xillybus.com/downloads/doc/xillybus_getting_started_zynq.pdf 


启动系统后,需要运行GUI,您必须输入命令“startx”(不带“”)并按Enter键(图1)。你已加载GUI,可以继续操作下一步(图2)。

3.png

Step3: 安装OpenCV

OpenCV(开源计算机视觉库)是一个开源的计算机视觉和机器学习软件库。OpenCV旨在为计算机视觉应用提供通用基础设施。

按照以下步骤完成安装和配置OpenCV 2.4.1。
可以将每个步骤中显示的命令直接复制并粘贴到Linux命令行中。要打开终端,请按alt + ctrl + t。

1.删除所有已安装的ffmpeg和x264版本。

sudo apt-get remove ffmpeg x264 libx264-dev

2.获取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

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

4.下载并安装gtk。

sudo apt-get install libgtk2.0-0 libgtk2.0-dev

5.下载并安装libjpeg。

sudo apt-get install libjpeg8 libjpeg8-dev

6.创建一个目录来保存源代码。

cd~

mkdir src

7.下载并安装install x264。

cd~ / src

wget ftp://ftp.videolan.org/pub/videolan/x264/snapshots/x264-snapshot-20050824-2219.tar.bz2

tar xvf x264-snapshot-20120528-2245-stable.tar.bz2

cd x264-snapshot-20120528-2245-stable

8.配置和构建x264库。

./configure --enable-shared --enable-pic

make

sudo make install

9.下载ffmpeg版本0.11.1  链接:http://ffmpeg.org/download.html.

cd~ / src

wget http://ffmpeg.org/releases/ffmpeg-0.11.1.tar.bz2

tar xvf ffmpeg-0.11.1.tar.bz2

cd ffmpeg-0.11.1

10.配置和构建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-shared --enable-pic

make

sudo make install

11.下载并安装最新版本的v4l(适用于Linux的视频)链接: http://www.linuxtv.org/downloads/v4l-utils/. 对于本指南,我使用的是0.8.8版本。

cd~ / src

wget http://www.linuxtv.org/downloads/v4l-utils/v4l-utils-1.6.2.tar.bz2

tar xvf v4l-utils-0.8.8.tar.bz2

cd v4l-utils-0.8.8

make

sudo make install

12.下载并安装安装OpenCV 2.4.2。链接: http://sourceforge.net/projects/opencvlibrary/files/

cd~ / src

wget http://downloads.sourceforge.net/project/opencvlibrary/opencv-unix/2.4.2/OpenCV-2.4.2.tar.bz2

tar xvf OpenCV-2.4.2.tar.bz2

13.创建一个新的构建目录并运行cmake:

cd OpenCV-2.4.2 /

mkdir build

cd build

cmake -D CMAKE_BUILD_TYPE = RELEASE ..

14.验证cmake的输出是否包含以下文本:found gstreamer-base-0.10GTK + 2.x:YESFFMPEG:YESGStreamer:YESV4L / V4L2:使用libv4l构建并安装OpenCV。

make

sudo make install

15.配置Linux。通过输入以下shell命令告诉linux OpenCV的共享库所在的位置:

export LD_LIBRARY_PATH = / usr / local / lib

16.将命令添加到.bashrc文件中,这样就不必在每次启动新终端时都输入。

或者,您可以配置系统范围的库搜索路径。使用您喜欢的编辑器,将包含文本/ usr / local / lib的单行添加到名为/etc/ld.so.conf.d/opencv.conf的文件的末尾。在标准的Ubuntu安装中,opencv.conf文件不存在; 你需要创建它。例如,使用vi输入以下命令:

sudo vi /etc/ld.so.conf.d/opencv.conf

G

Ø

/ usr / local / lib

wq!

17.编辑opencv.conf文件后,输入以下命令:

sudo ldconfig /etc/ld.so.conf

18.使用您喜欢的编辑器,将以下两行添加到/etc/bash.bashrc的末尾:

PKG_CONFIG_PATH = $ PKG_CONFIG_PATH:/usr/local/lib/pkgconfig

export PKG_CONFIG_PATH

完成前面的步骤后,您的系统应该已准备好编译使用OpenCV库的代码。以下示例显示了为OpenCV编译代码的一种方法:

g ++`pkg-config opencv --cflags` my_code.cpp -o my_code`pkg-config opencv --libs`


Step4: 游戏

该游戏是一款基本的8位乒乓球游戏。这不是最终版本,设计中仍然存在一些错误,必须与手指检测应用程序合并。屏幕上的紫色字段保留给fingeres。此时,用键盘(左侧球员 - Q和A,右侧球员 - O和L)进行游戏,您可以手动改变速度(S)。

游戏和手指检测应用程序是分开设计的,其思路是手指检测应用程序检测紫色线上的手指,计算y坐标,然后将该坐标发送给游戏应用程序,然后更新玩家平铺的位置。

game.zip文件包含可以使用以下命令行编译的源代码:

g ++`pkg-config opencv --cflags` test2.cpp -o game`pkg-config opencv --libs`

你可以运行游戏:

./game

Step5: 手指监测

使用网络摄像头,我们正在跟踪多个对象并在屏幕上计算它们的坐标。这部分尚在开发中。我们此时所做的是跟踪这个简单的蓝色物体。我们也可以检测并跟踪手指,但是你需要在bo上改变bool变量calibrationMode(第136行)。然后,当构建并执行程序时,将出现滑块窗口,首先需要更改最小和最大HUE值以选择要检测的颜色。检测到的对象在屏幕上显示为白色。之后,您可以使用最小值和最大值SATURATION和VALUE来降低噪音(图1)。

如果将calibrationMode设置为false,它将检测蓝色的对象(图2)。

finger.zip文件包含源代码。


评论