代码之家  ›  专栏  ›  技术社区  ›  Wallter

C-多点触控帮助?USB网络摄像头输入?图像分析?

  •  1
  • Wallter  · 技术社区  · 16 年前

    我正在试着做一个DIY触摸屏,我想把它加入当地的科学博览会,但我想在多点触摸的编程方面做。我的问题在于我从来没有分析过图像(从基于USB的网络摄像头)。
    如果可能的话,我愿意在C语言中做这个项目(如果最差的话,C++)。
    我需要分析一张黑图 (来自USB网络摄像头) 然后检测白斑何时出现。 我该怎么做呢?---是否有已知的方法检测每一个像素的变化与分析?如果是这样的话,一个指向这个地方的指针就好了:)
    阿尔索 如何通过USB从网络摄像头获取输入? ---在哪里可以买到图书馆/DDL?
    我已经看到一些程序可以使用这个,但是它们转换图像-这需要时间和处理器速度…有没有使用原始输入图像/数据的方法?
    帮助?

    4 回复  |  直到 16 年前
        1
  •  3
  •   monksy    16 年前

    一旦你有了你的输入(假设它是完全黑暗和完全明亮的对比度),你将得到一个类似的值矩阵:(灰度)

    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. 斑点碰撞(你怎么知道哪个斑点去哪里)
    2. 斑点交叉(斑点是否切换到侧面,或者斑点是否与前一行程反向移动)
    3. 组合斑点(两个斑点变为一个斑点)

    使用C抓取相机 to check this out. WIA不是拍摄照片最快的方法。然而,它更容易处理。我的建议是,如果你仍然有兴趣这样做是绘制两个图像在photoshop和跟踪标记。它没有那么令人兴奋,但它将帮助您更容易地解决问题并放松问题描述。

        2
  •  2
  •   Adam Harte    16 年前

    你想要的是“斑点检测”。这里有一条关于 blob library

    已经有一堆多点触控/计算机视觉库和软件。最好的资源是 wiki.nuigroup.com . 特别是 Frameworks and Libraries 部分。目前那里没有太多的C信息,但是如果你确实发现了一些东西,请确保你把它放在那个wiki上给每个人看。

    还有 NuiGroup forum C# (.NET/Silverlight/WPF) section 这对你有很大帮助。在那个社区里有一些很大的帮助。

        3
  •  1
  •   David    16 年前

    作为一个开始使用网络摄像头的地方,我将从这里开始:

    http://www.hanselman.com/blog/CapturingVideoAWebCameraUsingWIANotPossible.aspx

    你会有一些链接要遵循,但我建议你从这里开始,因为这是一篇文章,斯科特谈到了不同的挑战和常见问题,并提供了更多信息的链接。

        4
  •  0
  •   Kurru    16 年前

    要从网络摄像机获取图像, AForge 框架非常容易使用!查看运动检测示例应用程序以获取代码:)