利用 Digilent Zybo FPGA 開發板設計虛擬觸控遊戲

 

 

利用 Zybo 設計一個虛擬觸控螢幕的有趣實作8~~ 以下將提供自定義硬體的逐步說明,讓您可以一邊使用強大的 Zybo 開發板,一邊使用相機與手指檢測在簡單的 TFT 顯示器上模擬觸控螢幕。

 

前置作業

硬體列表:

  • Digilent Zybo Board
  • Vivado 2014.1 Webpack
  • USB網路攝影鏡頭
  • VGA TFT顯示器
  • 2 個 Digilent JoyStick 模組
  • micro SD卡(至少4GB)
  • 鍵盤
  • 滑鼠
  • USB HUB

所需軟體:

  • Xilyinx by Xilybus
  • OpenCV

 

安裝操作系統

第一步是在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)。

 

 

安裝 OpenCV

Open CV(開源計算機視覺庫)是一個開源的電腦視覺和機器學習軟體資料庫,為電腦視覺應用提供通用基礎設施。

按照以下步驟完成安裝和配置 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`

 

開始遊戲

該遊戲是一款基本的 8 位元乒乓球遊戲。這不是最終版本,設計中仍然存在一些錯誤,必須與手指檢測應用程序合併。屏幕上的紫色字段保留給 fingeres。此時,用鍵盤(左側球員- Q和A,右側球員- O和L)進行遊戲,您可以手動改變速度(S)。

遊戲和手指檢測應用程序是分開設計的,其思路是手指檢測應用程序檢測紫色線上的手指,計算 y 座標,然後將該座標發送給遊戲應用程序,然後更新玩家平舖的位置。

game.zip文件包含可以使用以下命令行編譯的源代碼:
g ++`pkg-config opencv --cflags` test2.cpp -o game`pkg-config opencv --libs`

你可以運行遊戲:
./game

 

 

手指監測

使用網路攝影鏡頭,我們正在跟踪多個對象並在螢幕上計算它們的座標。這部分尚在開發中。此時所做的是跟踪這個簡單的藍色物體。我們也可以檢測並跟踪手指,但是你需要在 bo 上改變 bool 變量calibrationMode(第136行)。然後,當建立並執行程序時,將出現滑塊窗口,首先需要更改最小和最大 HUE 值以選擇要檢測的顏色。檢測到的對像在屏幕上顯示為白色。之後,您可以使用最小值和最大值 SATURATION 和 VALUE 來降低噪音。 如果將 calibrationMode 設置為 false,它將檢測藍色的對象。 finger.zip 文件包含源代碼。

 


文章連結 │ 使用Digilent Zybo的虚拟触屏游戏项目的DIY动手指南
程式碼下載  https://drive.google.com/file/d/189PW_L9ujhpYz8Al2f8T3pACYgEVKcEK/view?usp=sharing