如何在 C# 中从网络摄像头获取持续的位图图像流

2023-12-31

我们有一个对视频流执行处理的 C# 应用程序。这是一个低级应用程序,以位图格式接收每一帧,因此基本上我们每秒需要 25 个图像。该应用程序已经适用于我们的一些媒体源,但我们现在需要添加网络摄像头作为输入设备。

因此,我们基本上需要从网络摄像头连续捕获位图图像,以便我们可以将所有这些帧作为“流”传递到我们的应用程序。

访问网络摄像头并直接从网络摄像头读取实际帧作为单个图像的最佳和最简单的方法是什么?我还处于起步阶段。

有许多库允许人们访问网络摄像头,在 Windows 面板上预览网络摄像头的内容,然后使用屏幕捕获再次捕获该图像。不幸的是,这在每秒捕获 25 帧时无法提供必要的性能。 IVMRWindowlessControl9::GetCurrentImage 被提到作为另一种替代方案,但这似乎又是针对不频繁的快照而不是恒定的图像流。直播网 http://sourceforge.net/projects/directshownet许多人都提到它是一个很好的候选者,但目前还不清楚如何简单地从网络摄像头抓取图像。此外,许多消息来源都对 Microsoft 不再支持 Directshow 表示担忧。另外,我见过的实现需要 ImageGrabber,这显然也是不再支持 https://stackoverflow.com/questions/8039809/directshow-getting-video-frames。 MS 的较新替代方案似乎是 Media Foundation,但我的研究尚未找到任何如何实现此功能的工作示例(并且我不确定这是否可以在旧版本的 Windows(例如 XP)上运行)。DirectX.Capture http://www.codeproject.com/Articles/3566/DirectX-Capture-Class-Library是一个很棒的图书馆(看到一个很好的实现 http://dashingquill.wordpress.com/2012/06/27/capturing-webcam-using-directshow-net-library/)但似乎缺乏直接获取视频图像的过滤器和方法。我也开始关注过滤器和过滤图 http://msdn.microsoft.com/en-us/library/ms787763%28VS.85%29.aspx但这看起来非常复杂,而且确实感觉有点像“重新发明轮子”。

总的来说,上面简要提到的所有解决方案似乎都相当陈旧。有人能给我指点一下如何让网络摄像头在 C# 中工作并每秒从中抓取几张图像的分步指南吗? (我们有时还必须处理音频,因此不排除视频的解决方案将是最有帮助的)。


我使用 AForge.Video(在这里找到它:code.google.com/p/aforge/),因为它是一个非常快的 C# 实现。我对其性能非常满意,它可以毫不费力地在一台 8 年旧电脑上以 30 fps 的速度从两个高清网络摄像头进行捕获。数据作为本机 IntPtr 提供,因此非常适合使用本机代码或 opencv 进行进一步处理。

opencv 包装器 emgu 和 opencvsharp 都实现了基本的视频捕获功能,这可能足以满足您的目的。显然,如果您要执行图像处理/计算机视觉,您可能无论如何都想使用它们。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 C# 中从网络摄像头获取持续的位图图像流 的相关文章

随机推荐

  • CWnd::CreateDlgIndirect 离开 m_hWnd==NULL

    我正在处理的对话框未显示 使用 CWnd CreateDlgIndirect LPCDLGTEMPLATE lpDialogTemplate CWnd pParentWnd HINSTANCE hInst 对 CreateDlgIndire
  • Ubuntu - Anaconda 2020.02 - 命名空间 Gtk 不可用

    这是在 Ubuntu 16 04 LTS 上 我遇到了与这个问题相同的问题 ValueError 命名空间 Gtk 不可用 https stackoverflow com questions 56823857 valueerror name
  • 保持帐户登录

    我们有一个内部控制面板 办公室的所有员工都全天登录 包括客户服务 我希望对其进行设置 以便在会话到期之前让您保持登录状态 1 小时 如何在 PHP ini 中更改此设置 在我明白将保持会话打开直到浏览器窗口关闭之前我做了一个更改 但它没有坚
  • 使用 plt.plot 与 plt.hist 的彩色图像直方图差异 [Python]

    我使用下面的代码使用两种方法生成彩色图像的直方图 方法一 使用cv2 calcHist 函数计算频率 使用 plt plot 生成频率的线图 方法 2 使用plt hist 函数计算并生成直方图 我添加了bin 250以便2个直方图一致 观
  • 如何在 Python 中将 Excel 工作表另存为 HTML?

    我正在与这个图书馆合作XlsxWriter https pypi python org pypi XlsxWriter 我打开了一本工作簿并在其中写了一些内容 考虑官方的例子 http xlsxwriter readthedocs org
  • ERR_BAD_SSL_CLIENT_AUTH_CERT

    我们在浏览大多数 https 网站时开始遇到问题 示例包括 https technet microsoft com https technet microsoft com https mail google com https mail g
  • 是否可以使用 addEventListener 调用类方法?

    只是我一直想知道的事情 在第二个参数中 addEventListener方法 您可以调用 自定义 类方法 而不是函数吗 即像下面这样的东西会起作用吗 var object new ClassName document getElementB
  • UIScrollView 滚动时重绘内容?

    我知道有一个属性或方法可以使scrollview uiview 在滚动时调用drawRect 方法 由于性能原因 默认情况下处于禁用状态 但我需要启用它 我不记得该方法的名称 因此我无法寻找它 有人知道我在寻找什么吗 提前致谢 我建议使用s
  • QTreeWidget 内的 QT 可点击小部件(可能是按钮)?

    我有一个基本上是 QTreeWidget 的表 我想在其中放置一个可点击的小部件 可能是一个按钮 每行都是一个 QTreeWidgetItem 但我不知道如何使用 QTreeWidgetItem setData 添加按钮 这是对 Qt 文档
  • 无法从 C# 中的 .Net 套接字正确读取数据

    我有一个使用套接字通信的 C 客户端和服务器类 服务器看起来像这样 public class AsyncTcpServer private Socket server socket private Socket client socket
  • iPhone OpenGL ES 不正确的 alpha 混合

    我在 iPhone 上使用 openGL ES 时遇到了不正确的 alpha 混合结果的问题 这是我创建纹理对象的代码 glGenTextures 1 tex name glBindTexture GL TEXTURE 2D tex nam
  • Windows CDROM 弹出

    有谁知道在 Windows 2000 或更高版本上以编程方式关闭 CD 托盘的方法吗 打开 CD 托盘存在 但我似乎无法关闭它 尤其是在 W2k 下 如果可能的话 我特别寻找一种从批处理文件中执行此操作的方法 但 API 调用也可以 我有点
  • CSS 向右浮动无法正常工作

    我的右侧浮子没有按我预期的方式工作 我希望我的按钮能够很好地对齐到一行上方文本的右侧 div style padding 5px border bottom width 1px border bottom color gray border
  • 在帖子上发帖时遇到“(#100) 查找请求的故事时出错”

    我正在使用 Graph API 来获取用户被标记的帖子 然后通过以下方式对帖子进行点赞POSTing to post id likes 然而 即使该帖子显然存在 因为我能够检索到post id 发出like时 遇到如下错误 100 Erro
  • C# 跟踪截断长消息

    在 C 中 我启用了跟踪和网络跟踪源
  • 是否有一种算法可以将威胁范围与二维网格上的任意移动范围相结合?

    我正在构建一个简单的基于 2D 网格的游戏 并正在寻找一种方法来计算每个角色可以在游戏板上施加的 威胁 区域 当前地点的威胁很容易计算 这是下面的红色菱形 但我希望将这些信息与任意 可以步行到这里 区域 橙色 结合起来 该算法一起会给我我的
  • 如何链接docker容器?

    我尝试链接我的 docker 容器 但似乎在访问时出错 我的结构如下 数据库docker Mysql 容器名称是um mysql 后端 docker Tomcat 镜像名称为cz um app 前端 docker Nginx 镜像名称为cz
  • 如何从 OAuth2 授权服务器/用户端点获取自定义用户信息

    我有一个资源服务器配置为 EnableResourceServer注释 它通过以下方式引用授权服务器user info uri参数如下 security oauth2 resource user info uri http localhos
  • Visual Studio 中的包目录是什么?我应该将它包含在 SVN 中吗?

    我第一次在 Visual Studio 2010 中使用 ASP NET MVC 4 并使用 SVN 控制源代码 我曾经在 Visual Studio 2008 中使用 MVC 1 其中我有自己的 svn ignore 过滤器 pdb ex
  • 如何在 C# 中从网络摄像头获取持续的位图图像流

    我们有一个对视频流执行处理的 C 应用程序 这是一个低级应用程序 以位图格式接收每一帧 因此基本上我们每秒需要 25 个图像 该应用程序已经适用于我们的一些媒体源 但我们现在需要添加网络摄像头作为输入设备 因此 我们基本上需要从网络摄像头连