C# 中的网络摄像头:从网络摄像头捕捉图像的最简单方法





0/5 (0投票)
获取在 .NET 应用程序中集成从摄像头获取图像的解决方案。只需几行代码即可实现此功能。
摄像头是一种简单且经济高效的视频流图像获取方式,在商业世界中得到广泛应用。 以下是该设备的一些常见用途
- 在医院中,拍摄患者的照片并将其与其病历文件一起上传到服务器。
- 在银行中,代表使用网络摄像头扫描客户的身份证。
尽管摄像头在上述场景中非常有用,但从头开始开发一个用于图像获取、编辑、保存和上传的应用程序并非易事。
为了节省您的时间和精力,Dynamsoft 开发了 SDK Dynamic .NET TWAIN,它可以自行处理上述所有任务。 基于 .NET 框架,您只需几行 C# 代码即可开发自己的应用程序。
如果您想尝试这种组合,您可以从本文下载示例代码和 30 天免费试用版。
主要特点
- 简单。Dynamic .NET TWAIN 专为 C# 和 VB.NET 设计,非常易于使用。 您只需几行代码即可完成工作。
- 强大。Dynamic .NET TWAIN 以多种方式处理图像的获取、编辑、保存和上传。 您总能找到最适合您应用程序的解决方案。
- 灵活。同时支持 WinForm 和 WPF。 除了摄像头之外,.NET 控件还兼容扫描仪和其他成像设备。
Procedure
步骤 1. 创建自己的 C# 摄像头应用程序
在 C# 中创建一个简单的 Forms 应用程序
将 Dynamic .NET TWAIN 添加到工具箱:假设您已安装它,您可以浏览并添加 DynamicDotNetTWAIN.dll,位于 C:\Program Files (x86)\Dynamsoft\Dynamic .NET TWAIN 4.1 Trial。(如果您尚未在开发机器上安装它,您可以从 Dynamic .NET TWAIN 30 天免费试用版 下载试用版。)
将 DynamicDotNetTwain 拖放到您的窗体上以创建一个控件:
步骤 2. 添加视频容器和必要的按钮
将一个 picturebox 添加到窗体作为视频容器。 添加用于选择摄像头、获取图像、保存/上传图像和删除图像的按钮。 创建一个下拉框来保存分辨率。 可以根据您的要求添加更多功能。 见下文
步骤 3. 添加按钮代码
初始化
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using Dynamsoft.DotNet.TWAIN.Enums;
using Dynamsoft.DotNet.TWAIN.WebCamera;
namespace UseWebcamInCSharp
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
dynamicDotNetTwain1.IfShowUI = true;
dynamicDotNetTwain1.SupportedDeviceType = EnumSupportedDeviceType.SDT_WEBCAM;
dynamicDotNetTwain1.IfThrowException = true;
}
//...
选择一个摄像头并启动视频流
//Select a source
private void btnSelect_Click(object sender, EventArgs e)
{
try
{
dynamicDotNetTwain1.SelectSource();
dynamicDotNetTwain1.SetVideoContainer(pictureBox1);
dynamicDotNetTwain1.OpenSource();
//List the source name and resolutions
txtSourceName.Text = dynamicDotNetTwain1.CurrentSourceName;
int count = dynamicDotNetTwain1.ResolutionForCamList.Count;
for (int j = 0; j < count; j++)
{
string tempHeight = dynamicDotNetTwain1.ResolutionForCamList[j].Height.ToString();
string tempWidth = dynamicDotNetTwain1.ResolutionForCamList[j].Width.ToString();
string tempResolution = tempWidth + "X" + tempHeight;
comboResolution.Items.Insert(j, tempResolution);
comboResolution.SelectedIndex = 0;
}
}
catch (Exception exp)
{
MessageBox.Show(exp.Message);
}
}
更改分辨率
//Change the resolution
private void comboResolution_SelectedIndexChanged(object sender, EventArgs e)
{
dynamicDotNetTwain1.ResolutionForCam = dynamicDotNetTwain1.ResolutionForCamList[comboResolution.SelectedIndex];
}
以上是最简单的。 根据您的要求,除了分辨率之外,您还可以在实际获取图像之前调整亮度、对比度、清晰度等。
从视频流中获取图像
//Acquire an image
private void btnAcquire_Click(object sender, EventArgs e)
{
try
{
dynamicDotNetTwain1.EnableSource();
}
catch (Exception exp)
{
MessageBox.Show(exp.Message);
}
}
使用 Dynamic .NET TWAIN 的内部图像编辑器编辑图像
//Edit an image
private void btnEdit_Click(object sender, EventArgs e)
{
dynamicDotNetTwain1.ShowImageEditor();
}
您可以根据需要添加更多编辑功能。
将获取的图像本地保存
//Save images
private void btnSave_Click(object sender, EventArgs e)
{
SaveFileDialog saveFileDialog = new SaveFileDialog();
saveFileDialog.FileName = "test.pdf";
saveFileDialog.Filter = "pdf files (*.pdf)|*.pdf|All files (*.*)|*.*";
if (saveFileDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
dynamicDotNetTwain1.SaveAllAsPDF(saveFileDialog.FileName);
}
}
Dynamic .NET TWAIN 为 BMP、JPEG、PNG、(多页) TIF 和 (多页) PDF 提供内部编码器。
删除图像
//Remove images
private void btnRemove_Click(object sender, EventArgs e)
{
dynamicDotNetTwain1.RemoveAllImages();
}
上传图像
//Upload all images
private void btnUpload_Click(object sender, EventArgs e)
{
string serverName = "localhost"; //please update the server name accordingly
string actionPagePath = "/UseWebcamInCSharp/SaveToFile.aspx";
dynamicDotNetTwain1.HTTPUploadAllThroughPostAsPDF(serverName, actionPagePath, "test.pdf");
}
有时,您可能希望将扫描的图像上传到您的系统。 这包括 Web 服务器、SQL Server、Oracle、SharePoint 等。 并且某些要求是将图像和额外信息上传到不同的位置,例如,将图像上传到 Web 服务器,并将相应的图像 ID 和注释上传到 SQL Server 数据库。 这些都可以通过 Dynamic .NET TWAIN 轻松实现。 在此示例中,提供了最简单的示例。 扫描的图像将作为一页多页 PDF 上传到本地 Web 服务器
在服务器端,您需要添加一个操作页面来接收和处理(保存)上传的文件。 如果您正在尝试从本文下载的示例代码,您可以将 UseWebcamInCSharp_IIS 文件夹复制到您的 Web 服务器。
// SaveToFile.aspx.cs
using System;
using System.IO;
using System.Collections.Generic;
using System.Web;
public partial class SaveToFile : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
String strExc = "";
try
{
HttpFileCollection files = HttpContext.Current.Request.Files;
HttpPostedFile uploadfile = files["RemoteFile"];
uploadfile.SaveAs(System.Web.HttpContext.Current.Request.MapPath(".") + "/ImageScanned/" + uploadfile.FileName);
}
catch (Exception exc)
{
strExc = exc.ToString();
String strField1Path = HttpContext.Current.Request.MapPath(".") + "/" + "log.txt";
if (strField1Path != null)
{
StreamWriter sw1 = File.CreateText(strField1Path);
sw1.Write(strExc);
sw1.Close();
}
Response.Write(strExc);
}
}
}
获取示例
可以从本文下载详细的示例代码。 同时,您也可以获得 Dynamic .NET TWAIN 的 30 天免费试用版
如果您有任何问题,可以通过 support@dynamsoft.com 联系我们的支持团队。