C#怎么调用USB摄像头

发布时间:2022-03-28 09:12:49 作者:iii
来源:亿速云 阅读:622

C#怎么调用USB摄像头

在现代软件开发中,调用USB摄像头进行图像采集是一个常见的需求。无论是用于视频监控、人脸识别,还是简单的图像捕捉,C#作为一种强大的编程语言,提供了多种方式来实现这一功能。本文将介绍如何使用C#调用USB摄像头,并展示一个简单的示例代码。

1. 使用AForge.NET库

AForge.NET是一个开源的C#库,专门用于图像处理和计算机视觉任务。它提供了对USB摄像头的支持,使得调用摄像头变得非常简单。

1.1 安装AForge.NET

首先,你需要通过NuGet包管理器安装AForge.NET库。在Visual Studio中,打开NuGet包管理器控制台,输入以下命令:

Install-Package AForge.Video.DirectShow

1.2 调用USB摄像头

安装完成后,你可以使用以下代码来调用USB摄像头并显示实时视频:

using System;
using System.Windows.Forms;
using AForge.Video;
using AForge.Video.DirectShow;

namespace USBWebcamExample
{
    public partial class Form1 : Form
    {
        private FilterInfoCollection videoDevices;
        private VideoCaptureDevice videoSource;

        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            // 获取所有可用的视频设备
            videoDevices = new FilterInfoCollection(FilterCategory.VideoInputDevice);

            if (videoDevices.Count == 0)
            {
                MessageBox.Show("未找到可用的摄像头设备。");
                return;
            }

            // 选择第一个摄像头设备
            videoSource = new VideoCaptureDevice(videoDevices[0].MonikerString);

            // 设置视频源的事件处理程序
            videoSource.NewFrame += new NewFrameEventHandler(videoSource_NewFrame);

            // 开始捕获视频
            videoSource.Start();
        }

        private void videoSource_NewFrame(object sender, NewFrameEventArgs eventArgs)
        {
            // 将捕获的帧显示在PictureBox控件中
            pictureBox1.Image = (System.Drawing.Image)eventArgs.Frame.Clone();
        }

        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            // 停止捕获视频
            if (videoSource != null && videoSource.IsRunning)
            {
                videoSource.SignalToStop();
                videoSource.WaitForStop();
            }
        }
    }
}

1.3 代码说明

2. 使用OpenCVSharp

OpenCVSharp是OpenCV的C#封装库,它提供了丰富的图像处理和计算机视觉功能。你也可以使用OpenCVSharp来调用USB摄像头。

2.1 安装OpenCVSharp

通过NuGet包管理器安装OpenCVSharp:

Install-Package OpenCvSharp4
Install-Package OpenCvSharp4.runtime.win

2.2 调用USB摄像头

以下是一个使用OpenCVSharp调用USB摄像头的示例代码:

using System;
using OpenCvSharp;

namespace USBWebcamExample
{
    class Program
    {
        static void Main(string[] args)
        {
            // 打开默认摄像头
            using (var capture = new VideoCapture(0))
            {
                if (!capture.IsOpened())
                {
                    Console.WriteLine("无法打开摄像头。");
                    return;
                }

                using (var window = new Window("USB摄像头"))
                {
                    while (true)
                    {
                        // 读取一帧图像
                        using (var frame = capture.RetrieveMat())
                        {
                            if (frame.Empty())
                                break;

                            // 显示图像
                            window.ShowImage(frame);
                        }

                        // 按下ESC键退出
                        if (Cv2.WaitKey(10) == 27)
                            break;
                    }
                }
            }
        }
    }
}

2.3 代码说明

3. 总结

本文介绍了两种在C#中调用USB摄像头的方法:使用AForge.NET和OpenCVSharp。AForge.NET更适合简单的图像捕获任务,而OpenCVSharp则提供了更强大的图像处理和计算机视觉功能。根据你的需求选择合适的工具,可以轻松实现USB摄像头的调用和图像处理。

希望本文对你有所帮助!如果你有任何问题或建议,欢迎在评论区留言。

推荐阅读:
  1. C# 调用Dll
  2. C#怎么调用WebService

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

usb

上一篇:C#中如何使用DirectX.DirectSound播放语音

下一篇:ASP.NET Core全局异常处理方法是什么

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》