2009-11-11 63 views
1

我想製作一個DIY觸摸屏,並希望將其輸入當地的科學博覽會,但想在多點觸控的編程方面進行。我的問題在於我從未與分析圖像(從基於USB的網絡攝像頭)合作。
我想如果可能的話做這個項目在C#(C++ - 如果出現最壞的情況)
我需要分析一個黑色的畫面(從USB網絡攝像),然後檢測時產生白色斑點進入視圖。我會如何去做這件事? ---是否有一種已知的方法來檢測變化與分析每個pxl?如果是這樣一個指針,這將是很好的:)
另外我怎麼會通過USB從網絡攝像頭獲得輸入? ---我在哪裏可以得到圖書館/ ddl的?
我見過一些程序可以處理這個,但它們會轉換圖像 - 這會佔用時間和處理器速度......有沒有辦法使用原始輸入圖像/數據?
幫助?C# - 多點觸摸幫助? USB網絡攝像頭輸入?圖像分析?

回答

3

一旦你輸入你將有(假設它是完全黑暗和非常鮮明的對比),你將有值的矩陣與此類似:(灰度)

0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 256 0 0 0 0 0 
0 0 0 0 0 256 256 256 0 0 0 0 
0 0 0 0 0 0 256 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 

你的工作需要分割出正確顏色值(256)的部分並確定位置。爲了獲得移動[假設你只跟蹤1個對象],你將不得不比較blob的下一個位置和前一個位置。

在現實世界中,特別是使用網絡攝像頭時,您永遠不會得到具有良好對比度的純黑色背景。網絡攝像頭分辨率低,光線從未完美,噪聲也從鏡頭和CCD缺陷/色彩逼近中增加。

此外,您可能會遇到跟蹤斑點移動的問題(斑點可能在表面其他地方被錯誤檢測到。當您嘗試跟蹤兩個斑點時,將遇到更多問題。

其中的一些問題包括:

  1. 斑點碰撞(你怎麼知道哪個BLOB去哪裏)
  2. 斑點跨接管(沒有的斑點換邊,還是在斑點的相反方向移動從以前的旅行)
  3. 斑點組合(其中兩個斑點成爲一個)

要使用C#您可能希望to check this out. WIA是不是要用到的最快方法搶相機拍照。但是,處理起來要容易得多。我對你的建議如果你仍然對這樣做感興趣,那就是在Photoshop中繪製兩幅圖像並追蹤標記。它不那麼令人興奮,但它會幫助您更輕鬆地解決問題並放寬問題描述。

2

你想要的是「斑點檢測」。這裏有一個很好的線索blob library

已經有一堆多點觸摸/計算機視覺庫和軟件。這種事情的最佳資源是wiki.nuigroup.com。特別是Frameworks and Libraries部分。目前這裏沒有太多的C#信息,但是如果你確實找到了一些東西,確保你把它放在每個人的wiki上。

還有NuiGroup forum C# (.NET/Silverlight/WPF) section應該幫助你很多。在這個社區有一些很大的幫助。

0

要從網絡攝像頭獲取圖像,AForge框架非常容易使用!檢查運動檢測示例應用程序的代碼收集目的:)