C# AForge.Video 使用调用usb uvc协议调用摄像头 winform使用 视频呈现及抓拍 视频呈现秒开。

 1 public partial class Form3 : Form
 2 {
 3     private VideoCaptureDevice videoSource;
 4     private FilterInfoCollection videoDevices;
 5 
 6     public Form3()
 7     {
 8         InitializeComponent();
 9     }
10 
11     private void Form3_Load(object sender, EventArgs e)
12     {
13         // 枚举所有视频输入设备
14         videoDevices = new FilterInfoCollection(FilterCategory.VideoInputDevice);
15 
16         if (videoDevices.Count == 0)
17         {
18             MessageBox.Show("未找到视频输入设备!");
19             return;
20         }
21 
22         // 选择第一个视频设备
23         videoSource = new VideoCaptureDevice(videoDevices[0].MonikerString);
24 
25         // 为新帧事件添加处理程序
26         videoSource.NewFrame += new NewFrameEventHandler(videoSource_NewFrame);
27 
28         // 开始捕获视频
29         videoSource.Start();
30     }
31 
32     private void videoSource_NewFrame(object sender, NewFrameEventArgs eventArgs)
33     {
34         // 获取新帧的图像
35         Bitmap videoFrame = (Bitmap)eventArgs.Frame.Clone();
36 
37         // 在 PictureBox 中显示图像
38         videoSourcePlayer.Image = videoFrame;
39     }
40 
41     private void btnStart_Click_1(object sender, EventArgs e)
42     {
43         if (videoSourcePlayer.Image != null)
44         {
45             // 生成一个唯一的文件名
46             string fileName = $"capture_{DateTime.Now:yyyyMMddHHmmss}.jpg";
47 
48             // 保存图像
49             videoSourcePlayer.Image.Save(fileName, System.Drawing.Imaging.ImageFormat.Jpeg);
50 
51             MessageBox.Show($"图像已保存为 {fileName}");
52         }
53     }
54 
55     private void Form3_FormClosing(object sender, FormClosingEventArgs e)
56     {
57         // 停止视频捕获
58         if (videoSource != null && videoSource.IsRunning)
59         {
60             videoSource.SignalToStop();
61             videoSource.WaitForStop();
62             videoSource = null;
63         }
64     }
65 }

 

posted @ 2025-03-08 13:38  摩诘  阅读(262)  评论(0)    收藏  举报