Работа с веб камерой: чтобы не появлялось окно выбора камеры - 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();
        }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4.125 из 5
Похожие ответы