设置捕获设备 EmguCV

2023-12-12

我正在使用类Capture从 EmguCV 从网络摄像头拍摄图像。

根据该类的文档(http://www.emgu.com/wiki/files/2.0.0.0/html/18b6eba7-f18b-fa87-8bf2-2acff68988cb.htm),Capture 有 3 个构造函数。

Using public Capture()它应该使用默认相机并且工作正常。

正如我在其中一个例子中看到的那样,似乎

public Capture(string fileName) //takes a video file as the source for the captures.

最后一个构造函数是

public Capture(int camIndex) //which is supposed to "Create a capture using the specific camera" 

我尝试使用最后一个构造函数来允许用户选择设备,以防他有多个摄像头(例如,笔记本电脑中的集成摄像头或插入的 USB 摄像头)

我的问题是我不知道如何获取可用设备的列表。尝试创建索引从 0 到 99 的捕获,并尝试抓取预期出现异常的帧,但它只获取包含 100 个捕获的黑色图像。另外,当我使用默认相机时,我不知道如何获取他的索引。

有什么帮助吗?

Edit:答案中的信息Shiva我得到了它与此一起工作(我将其发布以供将来参考):

private void onLoad(object sender, RoutedEventArgs e)
{
    //Add the image processing to the dispatcher
    this.Dispatcher.Hooks.DispatcherInactive += new EventHandler(dispatcherTimer_Tick);

    //Get the information about the installed cameras and add the combobox items 
    DsDevice[] _SystemCamereas = DsDevice.GetDevicesOfCat(FilterCategory.VideoInputDevice);
    Video_Device[] WebCams = new Video_Device[_SystemCamereas.Length];
    for (int i = 0; i < _SystemCamereas.Length; i++)
    {
        WebCams[i] = new Video_Device(i, _SystemCamereas[i].Name, _SystemCamereas[i].ClassID); //fill web cam array
        ComboBoxDevices.Items.Add(WebCams[i].ToString());
    }
}

private void dispatcherTimer_Tick(object sender, EventArgs e)
{
    if (capture != null)
    {
        //Capture an image
        Image<Bgr, byte> img = capture.QueryFrame();
        //Show the image in the window
        ImageOriginal.Source = ImageProcessor.ToBitmapSource(img);
    }
}

private void ComboBoxDevices_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    //If there is already a capture, dispose it
    if (capture != null)
    {
        capture.Dispose();
    }
    //Get the selected camera
    int selectedDevice = ComboBoxDevices.SelectedIndex;
    try
    {
        //Create new capture with the selected camera
        capture = new Capture(selectedDevice);
    }
    catch (Exception excpt)
    {
        MessageBox.Show(excpt.Message);
    }
}

捕获对象可用于使用以下代码将静态文件作为输入

 Capture grabber = new Emgu.CV.Capture(@".\..\..\file.avi");//can be relative path or absolute path of the video file.

要查找已连接的网络摄像头的列表,需要将 Direct Show (DirectShow.Net.dll) 之类的内容导入到项目中,并使用以下代码来检索已连接的网络摄像头的列表。

    DsDevice[] _SystemCamereas = DsDevice.GetDevicesOfCat(FilterCategory.VideoInputDevice);
    Video_Device[] WebCams = new Video_Device[_SystemCamereas.Length];
        for (int i = 0; i < _SystemCamereas.Length; i++)
        {
            WebCams[i] = new Video_Device(i, _SystemCamereas[i].Name, _SystemCamereas[i].ClassID); //fill web cam array
            Camera_Selection.Items.Add(WebCams[i].ToString());
        }

检查此链接以获取完整代码http://www.emgu.com/wiki/index.php?title=Camera_Capture

可以将该列表填充到组合框中,并且可以选择每个连接的设备来检索来自特定设备的视频输入。

示例可以在这里找到:http://fewtutorials.bravesites.com/entries/emgu-cv-c/level-2---use-multiple-cameras-in-one-application.

对于你的最后一个问题,默认相机的索引始终为 0。 因此,要使用默认相机初始化捕获对象,您必须使用以下代码

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

设置捕获设备 EmguCV 的相关文章

随机推荐

  • Numpy 数组索引和/或添加似乎很慢

    我正在对 numpy 数组进行基准测试 因为当我尝试在脚本中用 numpy 数组替换 python 数组时 结果比预期的要慢 我知道我错过了一些东西 我希望有人能澄清我的无知 我创建了两个函数并为它们计时 NUM ITERATIONS 10
  • 仅在 tumblr 博客主页上显示 div?

    我对 CSS 和 HTML 的理解相当新手 我正在尝试做一些我认为应该相对简单的事情 在我正在创建的自定义 tumblr 主题中 但我找不到简单的答案 我有一种感觉 可能有一种超级简单的方法可以在 JavaScript 中完成我想要的事情
  • 将 .cpp 文件编译为程序内部的 EXE(EXE 文件)[关闭]

    很难说出这里问的是什么 这个问题模棱两可 含糊不清 不完整 过于宽泛或言辞激烈 无法以目前的形式合理回答 如需帮助澄清此问题以便重新打开 访问帮助中心 我想做一个程序 EXE文件 它将采用用户定义的设置并在前面提到的程序 EXE 内为用户创
  • 具有任意数量集合的 Python itertools.product

    我希望执行以下代码 temp temp append 1 2 temp append 3 4 temp append 5 6 print list itertools product temp 0 temp 1 temp 2 但是 我想以任
  • Python 替换 PHP 的标头

    如何在 python 中发送原始 http 标头 就像 PHP 中的 header 一样 在 Django 中 你会像 def someview request etc out HttpResponse outputstring mimet
  • 在 C++ 服务和用户模式应用程序崩溃后收集崩溃 .dmp 和 .hdmp 文件

    我正在使用 WinAPI 在 C MFC 中进行编码 我的软件由本地服务和用户模式应用程序组成 该应用程序为登录的 Windows 用户提供用户界面 我正在寻找一种方法来收集 dmp 和 hdmp 文件 以防这些模块中的任何一个发生崩溃 我
  • Android:下载文件并保存在 SD 卡上

    正在尝试创建一个应用程序来下载 SD 卡上的文件 这是我的代码 public class MainActivity extends Activity Override protected void onCreate Bundle saved
  • 如何使用 frexp 实现双变量的模运算符?

    我正在关注Kernighan Pike UNIX 编程环境 书中的一个练习 练习 8 2 第 241 页 要求实现模运算符 double变量在C So 4 6 2 1 0 4 4 0 3 0 1 0 因此基本上是在实施dmod using
  • 为什么具有elasticsearch状态的docker镜像总是重新启动?

    ubuntu 16 04 ram 1gb 在 aws 实例上 我必须运行旧的elasticsearch实例 所以我想使用elasticsearch 5 3 3版本的docker镜像 通过查看 stackoverflow 上多个具有相同标题的
  • 如何使 Pandas DataFrame (Python) 以二维 (2-D) 矩阵格式显示每个单元格

    我正在尝试使用 Python 中导入的 Matlab 结构创建二维 2 D 数据结构 当我使用 pandas DataFrame 时 每个单元格都包含一个矩阵 但是它们以列表格式显示 我正在尝试将其更改为矩阵格式 使用以下代码 Python
  • WebClient 与 HttpWebRequest/HttpWebResponse

    在我看来 大部分事情都可以通过HttpWebRequest Response也可以通过以下方式完成WebClient班级 我在某处读到WebClient是一个高级包装器WebRequest Response 到目前为止 我看不到任何可以完成
  • 禁用 tkinter 键盘快捷键 (2)

    我建议继续讨论禁用 tkinter 键盘快捷键 我有一个 Tkinter 也使用的事件的事件处理程序 因此我的 prog 和 Tkinter 交互很差 由于这是一个我无法解决的问题 我在这里重新提出 我尝试将其归结为以下代码中最简单的形式
  • 在 Android 中的 Horizo​​ntalScrollView 中动态插入视图

    我正在为 Android 平板电脑 3 0 开发一个应用程序 该应用程序有一个应可在水平轴上滚动的活动 如电子书 为此 我在布局上的 Horizo ntalScrollView 内使用relativelayout 这是 XML
  • Android指纹扫描仪应用程序[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 我在浏览网页时看到一个应用程序声称可以扫描用户的指纹 所以我想我应该尝试一下 该应用程序运行良好 我很惊讶 有谁知道这个应用程序如何读取用户的指纹
  • 为什么即使对象创建失败,Postgres 序列项也会上升?

    我有一个 Postgres 项目 其中我的模型之一是Client只需通过其主键进行索引 我在创建客户端时遇到了问题 因为有人创建了一个客户端 同时显式设置了我读过的主键 这不会影响 Postgres 的客户端序列表 该序列表负责在任何时候自
  • Airflow:高效地执行等待(睡眠)任务

    我需要在Airflow中实现等待任务 等待时间大约需要几个小时 第一的 TimeDeltaSensor 无法正常工作 SLEEP MINUTES 1ST 11 sleep task 1 TimeDeltaSensor task id sle
  • 单击按钮时 kivy 加载相机(zbarscan)

    我刚刚开始我的第一个 kivy 应用程序 该应用程序旨在从 开始扫描 按钮启动 然后显示使用 ZBarCam 构建的 QR 扫描仪 我正在使用 ScreensScreenManager要从按钮视图更改为相机视图 使用 zbarcam 问题是
  • Eclipse + Java:如何从默认包导入类?

    我在实体包中有类 但我仍然想运行默认包中的导入内容 我该怎么做 你不知道 Sorry 虽然我引用的是其他答案 您可以查看ORACLE参考这表明这是预期的行为 我建议将您的东西移动到指定的包中 如果你绝对无法重构 你可以尝试使用反射来访问它
  • 哪个图形 API 应与 Azure AD B2C 一起使用

    我们正在考虑在应用程序中使用 Azure AD B2C 但我对使用 Azure AD B2C 时使用哪个包感到困惑 此问题讨论 MSAL 和 ADAL 库之间的区别 用于 Azure AD B2C 和 Xamarin 的 MSAL 或 AD
  • 设置捕获设备 EmguCV

    我正在使用类Capture从 EmguCV 从网络摄像头拍摄图像 根据该类的文档 http www emgu com wiki files 2 0 0 0 html 18b6eba7 f18b fa87 8bf2 2acff68988cb