Работа с веб камерой: чтобы не появлялось окно выбора камеры - C#
Формулировка задачи:
Доброй ночи
Вот такая ситуация возникла.
Я тоже как и DMZ пошел через WinApi при работе с web камерой.
Но возникли следующее вопросы:
1. Вызываем capCreateCaptureWindowA - все ОК.
но при следующем SendMessage(HadleWPic, WM_CAP_DRIVER_CONNECT, Index, 0) - вылазит окно выбора WEB камеры
Вопрос: как сделать так, чтобы это окно не появлялось?
2. Попробовал написать тоже приложение на BCB C++, задержка изображения получилась меньше, более гладкое отображение картинки (хотя думал на шарпе будет лучше). В чем проблема?
Помогите ребята.
Решение задачи: «Работа с веб камерой: чтобы не появлялось окно выбора камеры»
textual
Листинг программы
//Сохраняет каждый десятый кадр using System.IO; using AForge.Video;//добавить библиотеку using AForge.Video.DirectShow;//добавить библиотеку public partial class Form1 : Form { public Form1() { InitializeComponent(); getCamList(); StartFoto(); } private bool DeviceExist = false; private FilterInfoCollection videoDevices; private VideoCaptureDevice videoSource = null; DirectoryInfo dir; string dirnew; private void StartFoto() { dir = new DirectoryInfo(Application.StartupPath); dirnew = dir.CreateSubdirectory("temp").ToString() + "\\"; if (DeviceExist) { videoSource = new VideoCaptureDevice(videoDevices[0].MonikerString); videoSource.NewFrame += new NewFrameEventHandler(video_NewFrame); // CloseVideoSource(); videoSource.Start(); } } private void getCamList() { try { videoDevices = new FilterInfoCollection(FilterCategory.VideoInputDevice); if (videoDevices.Count == 0) throw new ApplicationException(); DeviceExist = true; } catch (ApplicationException) { DeviceExist = false; } } int i = 0; private void video_NewFrame(object sender, NewFrameEventArgs eventArgs) { ++i; if (i % 10 == 0) { FileStream fs = new FileStream(dirnew + i.ToString() + ".Jpeg", FileMode.Create, FileAccess.ReadWrite); Bitmap img = (Bitmap)eventArgs.Frame.Clone(); Image im = img; img.Save(fs, System.Drawing.Imaging.ImageFormat.Jpeg); } } private void CloseVideoSource() { if (!(videoSource == null)) if (videoSource.IsRunning) { videoSource.SignalToStop(); videoSource = null; } } private void Form1_FormClosing(object sender, FormClosingEventArgs e) { CloseVideoSource(); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д