IMMComposer

IMMComposer是一個基於結點的通用可視化編程軟件。主要內容包含一套基於結點的可視化編程模型界面友好的交互式創作環境可視化交互子系統以及插件系統。目前功能模塊包含:圖像、視頻、聲音、數學。圖像、視頻部分基於OpenCV實現,聲音部分基於Bass庫實現,數學部分基於Lua的math包。

GitHub上項目地址https://github.com/dizuo/QVP_Kernal

 

圖像模塊

 

視頻模塊

youku演示視頻

http://v.youku.com/v_show/id_XNTY4MDE4MzE2.html BTW:youku上的廣告有點麻煩!

 

數學模塊

基於Lua實現了一個通用的二元計算控件(BinaryComputer)。下圖中BinaryComputer的第二個輸入參數Script爲Lua腳本,它定義了該二元計算器的計算功能。通過編寫不同的lua腳本,可以實現各種二元計算操作。

圖中的lua腳本代碼如下:

functionbinary(input1, input2)
      return input1 * input2 + math.sqrt(10000/2) – 200
end

上述代碼中math是Lua自帶的數學運算包。除開方函數之外,math函數包還提供了各種常見三角函數,開方,隨機數,冪次,對數,運算,取模,絕對值等數值運算函數。

BinaryComputer是一個通用型二元計算器,它兼容一元計算器(將input2置爲0即可),更高元計算器可以通過二元計算器組合得到。三元運算器可以通過兩個BinaryComputer組合,四元運算器可以通過三個BinaryComputer組合得到,依次類推N元計算器可以通過N-1個BinaryComputer組合得到。由此可見本文的BinaryComputer足以應對各種數值計算操作。

 

聲音模塊

 

互動遊戲設計

Face_Detection輸出人臉的位置信息,其他控件使用該信息可以實現一些互動效果。圖爲人臉識別互動遊戲,左邊窗體顯示人臉識別圖像,人臉用紅色圓圈標記,右邊窗體顯示2D遊戲場景。遊戲場景中,海底的魚雷左右運動隨機向水面發射炸彈,用戶通過人臉控制遊戲中的小船左右運動躲避炸彈,如果小船遇到炸彈則遊戲結束。控件場景中,CvFullWindow是圖像窗口代理控件,它與CvWindow不同之處是它所管理的OpenCV窗體大小可以任意改變,而且始終保持圖像充滿整個窗體。StringConsumer控件用來顯示圖像中的人臉座標數據,首先對輸入的字符串進行解碼操作然後顯示。GameConsumer爲2D遊戲主窗口的代理控件,它首先將圖像中人臉的X座標變換到遊戲的窗口座標系中,然後將變換後的X座標賦給遊戲場景中的小船,從而實現通過人臉控制二維場景中的小船運動。

 

系統改進設想

1,目前系統的界面以及可視化交互系統是基於Qt的graphics-view框架開發,將來可以將界面和核心分離,界面在web上基於js開發,核心放到服務器上。二者通過HTTP通信。

可視化交互系統,使用JS的矢量圖庫:http://raphaeljs.com/

2,插件系統的改進

目前插件系統存在一個問題,插件DLL中創建的控件對象在系統主框架中刪除。控件的創建和刪除都應該在DLL中進行。

IMMComposer更加適合觸屏下創作啊。。。

發佈了218 篇原創文章 · 獲贊 94 · 訪問量 95萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章