0

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

4

2 回答 2

3

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

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

于 2012-11-09T17:31:47.627 回答
0

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

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

于 2012-11-09T17:35:21.507 回答