【问题标题】:How to get playing video as a camera input?如何将播放视频作为相机输入?
【发布时间】:2012-11-09 17:25:09
【问题描述】:

我想从实时视频中检测特定对象。所以我实现了帧提取部分(opencv,c++)作为一部分,其他检测功能(emgucv,c#)作为另一部分。为了集成这些部分,我将 c++ 项目的 exe 文件添加到 c# 项目中,并且运行良好。但现在我想离线测试这个项目。这意味着我想通过使用保存在硬盘中的视频来测试这个项目。在集成之前,c++ 项目可以在在线和离线情况下执行。但在集成后只能在在线条件下执行。请帮我解决这个问题。

【问题讨论】:

    标签: c# c++ image-processing opencv emgucv


    【解决方案1】:

    您可以随时尝试使用 Magic Camera、Fake Webcam 等网络摄像头模拟器(只需 google 一下,互联网上有很多软件)——它们会播放视频文件,就好像它来自您的网络摄像头一样。

    但是,您可能还想重新组织您的软件设计,以便它可以同时接受流和文件输入 - 一旦您将处理逻辑与捕获逻辑分开,它应该非常简单。

    【讨论】:

    • 非常感谢您的回复。我认为这类软件可以用于这个项目。
    • 我下载了那种软件并使用该程序对其进行测试。是的,可以用作相机输入。但是使用该输入视频找不到任何对象。 (以前可以在实时摄像机视频中找到对象)。对这个问题有什么建议吗?
    【解决方案2】:

    实时摄像机基本上是图像帧的异步源。大概您将回调函数传递给相机 API,并且该回调是在新帧可用时触发的?您可以以相当直接的方式模仿此功能。

    编写一个函数来打开您的视频文件,然后在循环中运行...循环的每次迭代,它都会从文件中抓取一个帧,将其适当地打包,然后调用您的回调函数。然后它可以休眠几毫秒,然后重复循环。在它自己的线程中运行这个函数。从回调的角度来看,和直播摄像头没什么区别。

    【讨论】:

      猜你喜欢
      • 2017-06-29
      • 1970-01-01
      • 1970-01-01
      • 2014-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-21
      • 1970-01-01
      • 2014-02-06
      相关资源
      最近更新 更多