使用 WIA 在 C# 中使用网络摄像头自动拍照

2023-12-23

我正在使用 WIALib 访问我的网络摄像头。我正在开发的代码非常简单:按下按钮时,会拍摄网络摄像头图片,然后显示在图片框中。

我已经可以使用网络摄像头拍照,但尚未完全自动化。我发现检索网络摄像头拍摄的照片的唯一方法是使用以下方法:

wiaPics = wiaRoot.GetItemsFromUI( WiaFlag.SingleImage, WiaIntent.ImageTypeColor ) as CollectionClass;

但这要求用户选择图片。我总是想要拍最后一张照片。所以我正在尝试这样的方式:

string imageFileName = Path.GetTempFileName(); // create temporary file for image

wiaItem = wiaRoot.TakePicture(); // take a picture

Cursor.Current = Cursors.WaitCursor; // could take some time

this.Refresh();

wiaItem.Transfer(imageFileName, false); // transfer picture to our temporary file

pictureBox1.Image = Image.FromFile(imageFileName); // create Image instance from file

Marshal.ReleaseComObject(wiaItem);

但是 TakePicture() 方法返回 null,因此我无法传输图像。最奇怪的是,照片确实是在调用 TakePicture() 方法之后拍摄的,因为如果我手动转到网络摄像头,照片就在那里!我只是不明白为什么它不返回值。

总而言之,我需要以下两者之一: 1. 让 TakePicture() 工作,返回一个我可以使用的值。 2. 自动访问网络摄像头的图片列表,这样我就可以检索最后拍摄的照片。

谨致问候并感谢您的帮助,迈克尔。


据我所见,wiaItem = wiaRoot.TakePicture()正在走上错误的道路。尝试这个:

string imageFileName;
wiaRoot.TakePicture( out takenFileName);
pictureBox1.Image = Image.FromFile(imageFileName);

TakePicture 保存图片到一个文件,并返回新文件的名称作为输出参数。

Edit根据您的评论 - 您是否使用 WiaLib 的“Windows 7 版本”?如果是这样,请尝试这样的事情:

var manager = new DeviceManagerClass();
Item wiaItem;
Device device = null;
foreach (var info in manager.DeviceInfos)
{
    if (info.DeviceID == DESIRED_DEVICE_ID)
    {
        device = info.Connect();
        wiaItem = device.ExecuteCommand(CommandID.wiaCommandTakePicture);
    }
}

您使用 ExecuteCommand 的地方众所周知的指南 http://msdn.microsoft.com/en-us/library/ms630806(也从 COM 互操作包装器公开)而不是 TakePicture。无论如何,它对我的​​网络摄像头有效。

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

使用 WIA 在 C# 中使用网络摄像头自动拍照 的相关文章

  • 使用链表进行堆排序

    我想知道是否有人曾经使用链表进行堆排序 如果他们可以提供代码 我已经能够使用数组进行堆排序 但尝试在链表中进行排序似乎不切实际 而且在你知道的地方很痛苦 我必须为我正在做的项目实现链接列表 任何帮助将不胜感激 我也用C 答案是 你不想在链表
  • C#.Net 邮件将进入垃圾邮件文件夹

    我正在从 ASP net Web 应用程序发送电子邮件 邮件发送成功 没有失败 但大多数都进入了垃圾邮件文件夹 请帮助我克服垃圾邮件过滤器 我的发送邮件代码 public void SendMail string FromAddress s
  • 捕获 .aspx 和 .ascx 页面中的异常

    问题说明了一切 请看以下示例代码 ul li li ul
  • EntityHydrate 任务失败

    我最近安装了 Visual Studio 11 Beta 和 Visual Studio 2010 之后 我无法在 Visual Studio 2010 中构建依赖于 PostSharp 的项目 因此我卸载了 Visual Studio 1
  • 在 C++ 代码中转换字符串

    我正在学习 C 并开发一个项目来练习 但现在我想在代码中转换一个变量 字符串 就像这样 用户有一个包含 C 代码的文件 但我希望我的程序读取该文件并插入将其写入代码中 如下所示 include
  • 在 Mono 中反序列化 JSON 数据

    使用 Monodroid 时 是否有一种简单的方法可以将简单的 JSON 字符串反序列化为 NET 对象 System Json 只提供序列化 不提供反序列化 我尝试过的各种第三方库都会导致 Mono Monodroid 出现问题 谢谢 f
  • Linux 上的 RTLD_LOCAL 和dynamic_cast

    我们有一个由应用程序中的一些共享库构成的插件 我们需要在应用程序运行时更新它 出于性能原因 我们在卸载旧插件之前加载并开始使用新插件 并且只有当所有线程都使用旧插件完成后 我们才卸载它 由于新插件和旧插件的库具有相同的符号 我们dlopen
  • 条件类型定义

    如果我有一小段这样的代码 template
  • 如何在 Javascript 中连接 C# ActiveX 事件处理程序

    我尝试使用几个代码片段将 ActiveX 对象与 Javascript 事件处理程序挂钩 我无法确定为什么事件处理程序没有被调用 带有项目的 Github 存储库 https github com JesseKPhillips Csharp
  • Unity c# 四元数:将 y 轴与 z 轴交换

    我需要旋转一个对象以相对于现实世界进行精确旋转 因此调用Input gyro attitude返回表示设备位置的四元数 另一方面 这迫使我根据这个四元数作为默认旋转来计算每个旋转 将某些对象设置为朝上的简单方法如下 Vector3 up I
  • MySQL 连接器 C++ 64 位在 Visual Studio 2012 中从源代码构建

    我正在尝试建立mySQL 连接器 C 从源头在视觉工作室2012为了64 bit建筑学 我知道这取决于一些boost头文件和C 连接器 跑步CMake生成一个项目文件 但该项目文件无法编译 因为有一大堆非常令人困惑的错误 这些错误可能与包含
  • 以编程方式创建 Blob 存储容器

    我有一个要求 即在创建公司时 在我的 storageaccount 中创建关联的 blob 存储容器 并将容器名称设置为传入的字符串变量 我已尝试以下操作 public void AddCompanyStorage string subDo
  • 在哪里可以找到 Microsoft.Build.Utilities.v3.5

    如何获取 Microsoft Build Utilities v3 5 我正在使用 StyleCop 4 7 Stylecop dll 中的 StyleCop msbuild 任务似乎依赖于 Microsoft Build Utilitie
  • 调用 .ToArray() 时出现 ArgumentException

    我有一个经常被清除的列表 代码完全是这样的 VisitorAgent toPersist List
  • 构建 C# MVC 5 站点时项目之间的处理器架构不匹配

    我收到的错误如下 2017 年 4 月 20 日构建 13 23 38 C Windows Microsoft NET Framework v4 0 30319 Microsoft Common targets 1605 5 警告 MSB3
  • 在 C# 的 WebAPI 中的 ApiController 上使用“传输编码:分块”提供数据

    我需要服务分块传输使用编码数据API控制器 因为我无权访问HttpContext or the Http请求 我有点不知道在哪里写入响应以及在哪里刷新它 设置如下 public class MyController ApiControlle
  • 任何人都可以清楚地告诉如何在不使用像 这样的预定义函数的情况下找到带有小数值或小数值的指数吗? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 例如 2 0 5 1 414 所以想要 我是 c 的新手 所以请解释简单的逻辑 如果不是复杂的逻辑也足够了 在数学中 从整数取幂到实数
  • 如何组合两个 lambda [重复]

    这个问题在这里已经有答案了 可能的重复 在 C 中组合两个 lambda 表达式 https stackoverflow com questions 1717444 combining two lamba expressions in c
  • winform c# 中的弹出窗口

    我正在开发一个需要弹出窗口的项目 但问题是我还希望能够通过表单设计器在此弹出窗口中添加文本框等 所以基本上我有一个按钮 当您单击它时 它将打开我在表单设计器中设计的另一个窗口 我一直在谷歌搜索 但还没有找到我需要的东西 所以我希望你们能帮助
  • 从后面的代码添加外部 css 文件

    我有一个 CSS 文件 例如 SomeStyle css 我是否可以将此样式表文档从其代码隐藏应用到 aspx 页面 您可以将文字控件添加到标头控件中 Page Header Controls Add new System Web UI L

随机推荐

  • 无法使用 Edge.js 从节点服务调用 C# DLL 内的方法

    我正在使用 Edge js 并且能够运行大部分示例 但是当涉及到使用编译的 C dll 文件时 我无法让它工作 我的node js代码是 var clrMethod edge func assemblyFile C Users hello
  • 如何从 Google App 脚本中的自定义对话框窗口获取数据?

    我创建了一个自定义对话框窗口 https developers google com apps script guides dialogs在 Google 电子表格中使用 Google App 脚本 如下所示 如何将数据从窗口获取到电子表格
  • R-使用ggplot在同一图表上为三个数据集创建图例

    我想知道是否可以使用 R 中的 ggplot 为包含多个系列图的图形创建图例框 本质上 这就是我正在做的事情 x lt c 1 2 3 4 y lt c 1 1 1 2 1 3 1 4 y2 lt c 2 1 2 2 2 3 2 4 x3
  • 网站是否也应该是一种网络资源?

    每个网络应用程序 每个网站 都是一项服务 使网站易于网络冲浪者使用的功能也使 Web 服务 API 易于程序员使用 Richardson 和 Ruby RESTFul Web 服务 正如我所希望的那样 同时也是 Web 服务的网站提供其资源
  • 制作模式以使用 NSRegularExpression

    斯威夫特 4 4 我想创建NSAttributedString using NSRegularExpression This two are bold text and different
  • 如何设置圆的物理属性,使其遵循给定的路径

    物理体圈的运动对于我想要实现的目标来说太不稳定了 我想限制它 使其遵循接触特定点 或一系列点 的特定路径 如下图所示 如何设置物理属性以遍历相似的路径 如何设置圆的物理属性 使其遵循给定的路径 因此 本质上您希望使用实时运动将节点移动到特定
  • mmap 是进程间通信的最佳方式吗?

    我使用文件在 Python 和 Ruby 脚本之间进行通信 但是 我们有 mmap 这是我的问题 我可以使用 mmap 做同样的事情 进程之间通信 吗 与物理文件相比 mmap 能给我们带来什么优势 加速 两个进程之间通信的最简单方法是什么
  • Scala:类型注释使尾递归检查失败

    我向此模式匹配添加类型注释只是为了我自己的理解 annotation tailrec def run A io IO A A io match case Return a gt a case Suspend r gt r case Flat
  • 如何制作像类一样的“可变”向量

    我正在尝试创建充当多维向量的类 它不必做任何花哨的事情 我基本上想要一个 容器 类 foo 我可以通过 foo x y z 访问元素 现在我还需要 foo x y 和 foo x 类似的类 这让我思考以下 更一般的 问题 有没有一种方法可以
  • 如何切换被单击的元素并隐藏所有其他元素?

    我想隐藏任何可见的跨度元素 如果有 并在单击元素时再次切换它 div class item a href element1 a span span1 span br div div class item a href element2 a
  • 缓存优先 Service Worker:如何绕过更新资产的缓存?

    这是场景 您有一个当前通过软件缓存的站点 您部署一个新版本 其中包含带有缓存清除版本的更新软件 然后该公司宣布了新功能 然而 人们访问该站点时 即使软件崩溃 它仍然会提供以前的缓存 同时在后台更新其缓存 因此 前来寻求新功能的访问者看不到它
  • Jqgrid + CodeIgniter

    我试图让 jqgrid 与 codeigniter 一起工作 但我做不到 我只想以 json 格式显示表中的数据 但什么也没发生 但我不知道我做错了什么 我看不到包含我正在调用的内容的表格 我的控制器 class Grid extends
  • Angular 2:找不到名称“订阅”

    尝试设置属性的类型时出现错误Cannot find name Subscription 我从哪个包导入它 import Component OnDestroy OnInit from angular core import Activate
  • 如何使用协程中的值或告知何时完成[重复]

    这个问题在这里已经有答案了 例如 当使用 WWW 类调用 Web API 时 我想要返回一个值或有关何时完成及其状态的一些反馈 那么 让我向我展示一种巧妙的方法吧 这里我们创建一个 IEnumerator 它接受一个 Action 在我们的
  • 具有传输和消息安全性的 WCF 绑定

    我正在从事一个大项目 该项目广泛使用WCF用于不同类型的通信 作为新要求的一部分 我们需要与SOAP由第三方开发的 Web 服务 他们的服务是用Java开发的 有两个安全要求 它需要基本身份验证超过运输和 该消息必须是使用 X509 证书签
  • PHP:documentElement->childNodes 警告

    xml file get contents example com dom new DomDocument dom gt loadXML xml items dom gt documentElement foreach items gt c
  • 使用 jQuery 将 JSON 附加到表单并提交

    给定这个空表单 我将如何使用 jQuery 附加 JSON 对象作为参数 然后提交它 表单应该标准提交 而不是 AJAX
  • 如何获取 iPhone 通讯录联系人的电子邮件作为 NSStrings?

    我知道一封电子邮件可以有多个值 但我不确定如何浏览它们 我可以正确地找到一个人 ABRecordRef person getting a person NSString emails NSString ABRecordCopyValue p
  • Pandas/SQL 共现计数

    假设我有下表 数据框 d store s1 s1 s2 s2 product a c a c df pd DataFrame data d print df store product 0 s1 a 1 s1 c 3 s2 a 4 s2 c
  • 使用 WIA 在 C# 中使用网络摄像头自动拍照

    我正在使用 WIALib 访问我的网络摄像头 我正在开发的代码非常简单 按下按钮时 会拍摄网络摄像头图片 然后显示在图片框中 我已经可以使用网络摄像头拍照 但尚未完全自动化 我发现检索网络摄像头拍摄的照片的唯一方法是使用以下方法 wiaPi