Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
2 / 2 / 0
Регистрация: 05.12.2013
Сообщений: 316

Работа с двумя веб камерами

12.03.2019, 16:03. Показов 1572. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день! Хочу написать программу, с помощью которой буду управлять двумя подключенными веб камерами. С помощью одно хочу делать фото, а со второй записывать видео. Для подключения и работы с веб камерами нашел библиотеку Aforge. Получилось сделать управление одной камерой (записывать видео и делать фото), однако управлять двумя не получается. Подскажите, пожалуйста, как это можно сделать, возможно где-то есть пример реализации (сам не нашел).
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
12.03.2019, 16:03
Ответы с готовыми решениями:

Одновременная работа с двумя одинаковыми веб-камерами
Здраствуйте! Начинаю разрабатывать приложение. Приложению необходимо одновременно работать с двумя одинаковыми веб камерами. Вопрос в том...

Как работать с двумя веб камерами?
у меня 2 вопроса 1 как работать с двумя веб камерами? 2 как настроить разрешение камеры я нашел capDlgVideoFormat() и...

[MFC]Работа с 2мя веб камерами
кто нибудь снимал видео с 2х вебкамер одновременно? Использую DirectShow. Удалось получить изображение с одной веб камеры, которое...

11
1152 / 860 / 263
Регистрация: 30.04.2009
Сообщений: 3,603
12.03.2019, 17:37
Покажите как вы подключаетесь к одной камере.
0
2 / 2 / 0
Регистрация: 05.12.2013
Сообщений: 316
12.03.2019, 18:21  [ТС]
nicolas2008, получилось сделать так
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using AForge.Video;
using AForge.Video.DirectShow;
using AForge.Video.FFMPEG;
using System.Drawing.Imaging;
 
namespace web_camera
{
    public partial class Form1 : Form
    {
        VideoCaptureDevice device;
        Bitmap image;
        VideoFileWriter writer;
        public Form1()
        {
            InitializeComponent();
            comboBox1.DataSource = new FilterInfoCollection(FilterCategory.VideoInputDevice);
            comboBox1.SelectedIndex = 0;
            comboBox1.DisplayMember = "Name";
        }
 
 
 
 
        private void button1_Click(object sender, EventArgs e)
        {
            var filter = comboBox1.SelectedItem as FilterInfo;
            device = new VideoCaptureDevice(filter.MonikerString);
            device.NewFrame += device_NewFrame;
            device.Start();
        }
 
 
 
        private void button2_Click(object sender, EventArgs e)
        {
            pictureBox1.Image = null;
            StopCapture();
        }
 
        private void button3_Click(object sender, EventArgs e)
        {
            pictureBox1.Image.Save("pic"+ DateTime.Now.ToString("hhmmss")+ ".Jpg", ImageFormat.Jpeg);
        }
 
 
        void device_NewFrame(object sender, NewFrameEventArgs eventArgs)
        {
            if (pictureBox1.Image != null)
                pictureBox1.Image.Dispose();
 
 
            image = (Bitmap)eventArgs.Frame.Clone();
            pictureBox1.Image = (Bitmap)eventArgs.Frame.Clone();
            //pictureBox1.Image = image;
            writer.WriteVideoFrame(image);
        }
 
 
        void StopCapture()
        {
            if (device == null) return;
 
            device.NewFrame -= device_NewFrame;
            device.SignalToStop();
        }
 
        protected override void OnClosed(EventArgs e)
        {
            base.OnClosed(e);
            StopCapture();
        }
 
        private void button4_Click(object sender, EventArgs e)
        {
            int width = 640;
            int height = 480;
            // create instance of video writer
            writer = new VideoFileWriter();
            // create new video file
            writer.Open("test"+ DateTime.Now.ToString("hhmmss")+".avi", width, height, 25, VideoCodec.MPEG4);
            // create a bitmap to save into the video file
            //image = new Bitmap(pictureBox1.Image);
            
        }
 
        private void button5_Click(object sender, EventArgs e)
        {
            if (writer != null)
            {
                writer.Close();
            }
        }
    }
    }
0
1152 / 860 / 263
Регистрация: 30.04.2009
Сообщений: 3,603
12.03.2019, 19:06
Не понял в чем сложность.
Если вы хотите на одной форме иметь два набора UI компонентов (каждый для отдельной камеры), то создайте UserControl, поместите туда все что сейчас находится на форме и поместите на форму два таких UserControl-а.
0
2 / 2 / 0
Регистрация: 05.12.2013
Сообщений: 316
12.03.2019, 19:11  [ТС]
nicolas2008, никогда так не делал, не могли бы вы помочь с этим
Не совсем могу понять как разделить, чтобы фото делалось только по одной веб камере, а видео по другой, а также хотелось бы сделать настройки, чтобы можно было поменять назначения камер
0
1152 / 860 / 263
Регистрация: 30.04.2009
Сообщений: 3,603
12.03.2019, 19:49
Вам нужно два comboBox-а выбора камеры.
Первый - для выбор первой камеры, с которой хотите делать фото.
Второй - для выбора второй камеры, с которой хотите писать видео.
И соответственно наборы кнопок/компонентов которые нужны для каждого из режимов.
Также вместо одного поля VideoCaptureDevice device будет два, например VideoCaptureDevice device1, VideoCaptureDevice device2
Первый набор кнопок будет работать с первым комбобоксом и device1, а второй со вторым комбобоксом и device2.
0
2 / 2 / 0
Регистрация: 05.12.2013
Сообщений: 316
14.03.2019, 11:35  [ТС]
nicolas2008, сделал как вы сказали, всё добавил, однако теперь камеры не могут вместе нормально работать. То одна не включается, потому что другая уже включена, если же наоборот вторую сначала включить потом она не выключается, в чем может быть проблема подскажите пожалуйста?
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using AForge.Video;
using AForge.Video.DirectShow;
using AForge.Video.FFMPEG;
using System.Drawing.Imaging;
 
namespace web_camera
{
    public partial class Form1 : Form
    {
        VideoCaptureDevice device;
        VideoCaptureDevice device_photo;
        Bitmap image;
        Bitmap image2;
        VideoFileWriter writer;
        public Form1()
        {
            InitializeComponent();
            comboBox1.DataSource = new FilterInfoCollection(FilterCategory.VideoInputDevice);
            comboBox1.SelectedIndex = 0;
            comboBox1.DisplayMember = "Name";
 
            comboBox2.DataSource = new FilterInfoCollection(FilterCategory.VideoInputDevice);
            comboBox2.SelectedIndex = 1;
            comboBox2.DisplayMember = "Name";
        }
 
 
 
 
        private void button1_Click(object sender, EventArgs e)
        {
            var filter = comboBox1.SelectedItem as FilterInfo;
            device = new VideoCaptureDevice(filter.MonikerString);
            device.NewFrame += new NewFrameEventHandler(device_NewFrame);
            device.Start();
        }
 
 
 
        private void button2_Click(object sender, EventArgs e)
        {
            pictureBox1.Image = null;
            StopCapture();
        }
 
 
        void device_NewFrame(object sender, NewFrameEventArgs eventArgs)
        {
            if (pictureBox1.Image != null)
                pictureBox1.Image.Dispose();
 
 
            image = (Bitmap)eventArgs.Frame.Clone();
            pictureBox1.Image = (Bitmap)eventArgs.Frame.Clone();
            //pictureBox1.Image = image;
          //  writer.WriteVideoFrame(image);
        }
 
        void device_NewFrame_photo(object sender, NewFrameEventArgs eventArgs)
        {
            if (pictureBox2.Image != null)
                pictureBox2.Image.Dispose();
 
 
            image2 = (Bitmap)eventArgs.Frame.Clone();
            pictureBox2.Image = (Bitmap)eventArgs.Frame.Clone();
 
        }
 
 
        void StopCapture()
        {
            if (device == null) return;
 
            device.NewFrame -= device_NewFrame;
            device.SignalToStop();
        }
 
        void StopCapture_photo()
        {
            if (device_photo == null) return;
 
            device_photo.NewFrame -= device_NewFrame_photo;
            device_photo.SignalToStop();
        }
 
        protected override void OnClosed(EventArgs e)
        {
            base.OnClosed(e);
            StopCapture();
            StopCapture_photo();
        }
 
 
        private void button10_Click(object sender, EventArgs e)
        {
            var filter1 = comboBox2.SelectedItem as FilterInfo;
            device_photo = new VideoCaptureDevice(filter1.MonikerString);
            device_photo.NewFrame += new NewFrameEventHandler(device_NewFrame_photo);
            device_photo.Start();
        }
 
        private void button9_Click(object sender, EventArgs e)
        {
            pictureBox2.Image = null;
            StopCapture_photo();
        }
    }
    }
Добавлено через 1 час 49 минут
Почему-то если запустить первую камеру, вторая не хочет запускаться, а если наоборот запускать, то всё нормально
0
1152 / 860 / 263
Регистрация: 30.04.2009
Сообщений: 3,603
14.03.2019, 13:03
Цитата Сообщение от MAKC13 Посмотреть сообщение
Почему-то если запустить первую камеру, вторая не хочет запускаться
В чем это проявляется. Exception?
0
2 / 2 / 0
Регистрация: 05.12.2013
Сообщений: 316
14.03.2019, 13:14  [ТС]
nicolas2008, никаких исключений не выдает, просто ничего не происходит
0
1152 / 860 / 263
Регистрация: 30.04.2009
Сообщений: 3,603
14.03.2019, 13:35
Тут только дебажить и искать в чем отличие когда вторая камера запускается первой.
А бы в первую очередь проверил
var filter = comboBox1.SelectedItem as FilterInfo;
var filter1 = comboBox2.SelectedItem as FilterInfo;
0
2 / 2 / 0
Регистрация: 05.12.2013
Сообщений: 316
14.03.2019, 13:44  [ТС]
nicolas2008, а как это можно сделать? Я новичок в этом деле)
0
1152 / 860 / 263
Регистрация: 30.04.2009
Сообщений: 3,603
14.03.2019, 15:01
Поставить breakpoint в месте, где нужно что-то проверить.
Чтобы поставить breakpoint нужно поместить курсор на нужную строчку и нажать F9, строка при этом будет обозначена красным цветом.
Запустить приложение в режиме отладки (нажать F5), выполнить в приложении нужные действия, которые должны привести к выполнению интересующего блока кода, в вашем случае это будет например кнопка старта получения данных с камеры.
Когда выполнение дойдет до установленного breakpoint-а, студия приостановит выполнение и с помощью окна "Watch", "Locals" или просто по наведению курсора мыши на интересующую переменную можно узнать её текущее значение.
Дальше контролировать выполнение приложения можно с помощью комманд:
F5 - продолжить выполнение.
Shirt+F5 - закончить отладку и закрыть приложение.
F10 - выполнить одну строчку.
F11 - выполнить одну строчку с заходом в метод, если строчка содержит вызов метода.
Миниатюры
Работа с двумя веб камерами  
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
14.03.2019, 15:01
Помогаю со студенческими работами здесь

Создать 3D сканер с двумя простыми видео камерами
Значит реально создать 3D сканер с двумя простыми видео камерами и без дальномера?

Управление веб-камерами в Adobe Flash player с клавиатуры - реально ли?
Доброго времени суток, уважаемые специалисты. У меня к компу подключено несколько вэбкамер выбор нужной из которых в Адоб флэшплеере я...

Быстрое переключение между веб-камерами в Skype - как организовать?
Добрый день! есть ли возможность быстрого переключение между веб камерами? т.е. не заходить в настройки - видео и не выбирать камеру...

Работа с 2 камерами
Всем доброго времени суток! Передо мной встала следующая задача. Есть 2 камеры, изображение с которых необходимо брать одновременно....

Работа с камерами видеонаблюдений
Всем привет! Вот такая тема курсовой Хочу написать приложение используя firemonkey Смысл приложения такой, есть несколько магазинов, ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru