2009-11-11 33 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框架非常容易使用!检查运动检测示例应用程序的代码收集目的:)