Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# .NET
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.93/165: Рейтинг темы: голосов - 165, средняя оценка - 4.93
lifestyle
Mobile Developer
234 / 230 / 18
Регистрация: 10.05.2009
Сообщений: 917
1

Захват изображения с видеокамер/вебкамеры

16.04.2010, 01:26. Просмотров 30170. Ответов 29
Метки нет (Все метки)

Собственно сабж: еть вывод на экран видео,в определенный момент нужно сделать снимок(photo shot). Кто сталкивался, помогите плз,что то ничего дельного найти не получается или просто изза времени уже ничего не вижу))).Заранее благодарен.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.04.2010, 01:26
Ответы с готовыми решениями:

Захват изображения с камеры
Есть некая камера со своим SDK. Пишу простенькое приложение для захвата с неё...

Низкая скорость захват изображения с монитора
Привет. Есть (точнее уже угасает..) мысль - построить простенький аналог...

Захват изображения с видеокамеры -> реакция на движение -> снимок с камеры
Здравствуйте, форумчане! Помогите пожалуйста реализовать захват камеры с...

Перехват видеопотока с вебкамеры
Вечер добрый! Хотелось бы узнать, как реализовать перехват видео-потока с...

Aforge.net видео в реальном времени с вебкамеры
Надо, чтоб пользователь видел видео в реальном времени с вебкамеры в каком...

29
eugene0001
20 / 17 / 4
Регистрация: 07.02.2010
Сообщений: 59
16.04.2010, 02:04 2
Лучший ответ Сообщение было отмечено как решение

Решение

Скачай библиотеку AForge.net. Там есть контрол для воспроизведения видео с камеры.

C#
1
2
3
4
5
6
7
8
9
10
11
12
using AForge.Video;
using AForge.Video.DirectShow;
using AForge.Video.VFW;
using AForge.Vision;
...
FilterInfoCollection videodevices;
        VideoCaptureDevice videoSource;
...
 videodevices = new FilterInfoCollection(FilterCategory.VideoInputDevice);
            videoSource = new VideoCaptureDevice(videodevices[0].MonikerString);
            videoSourcePlayer1.VideoSource = videoSource;
            videoSource.Start();
Далее на контроле воспроизведения видео есть событие onNewFrame:
C#
1
2
3
4
private void videoSourcePlayer1_NewFrame(object sender, ref Bitmap image)
        {
...
}
ref Bitmap image и есть картинка в настоящий промежуток времени! юзай)
8
lifestyle
Mobile Developer
234 / 230 / 18
Регистрация: 10.05.2009
Сообщений: 917
16.04.2010, 03:13  [ТС] 3
название самого примера не моглы бы дать ?
0
eugene0001
20 / 17 / 4
Регистрация: 07.02.2010
Сообщений: 59
16.04.2010, 11:54 4
в смысле "название" примера?)
0
lifestyle
Mobile Developer
234 / 230 / 18
Регистрация: 10.05.2009
Сообщений: 917
16.04.2010, 13:58  [ТС] 5
в этом фрэймворке есть примеры и соответственно названия у них есть)))хотелось бы на полный код взгляенуть ,может получиться адаптировать под мой.У меня уже готовый код имеется с выводом видео на экран и еще кой какие примочки нету желения переписывать по новой все для использования Aforge.
Cудя по всему снимок с камеры уже есть, об этом говорит след строка:
C#
1
 engine.ReadFromBitmap((int)e.hBitmap, 0);
но я его не могу найти/достать его иди просто хотябы поместить в pictureBox.
хотелось бы знать в какую сторону вообще копать ...
Вот код который есть(может знакомо, кто поможет разобраться как сделать а то у меня что то не выходит):
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
public Form1()
        {
            
            InitializeComponent();
           
            if (CreateANPREngine(ref engine) != 0)
            {              
                MessageBox.Show("Unable to create ANPR engine");
                return;
            }
 
            try
            {
                engine.Init(true); // Video Mode
                
            }
            catch (COMException ex)
            {
                MessageBox.Show(ex.Message);
            }
 
            engine.LicenseManager.AddLicenseKey("YOUR DEVELOPER LICENSE KEY");
 
            cmbVideoSource.Items.Clear();
            for (int i = 0; i < axVideoCapture1.VideoSourceCount; i++)
            {
                cmbVideoSource.Items.Add(axVideoCapture1.get_VideoSources(i));
            }
 
           
          
            lblDate.Text = DateTime.Now.Date.ToShortDateString();
        }
 
 
private void btnStart_Click(object sender, EventArgs e)
        {
            axVideoCapture1.StartCapture();
        }
        
        private void btnStop_Click(object sender, EventArgs e)
        {
            axVideoCapture1.StopCapture();
        }
        
        private void axVideoCapture1_FrameReceived(object sender, AxDTKANPRLib._IVideoCaptureEvents_FrameReceivedEvent e)
        {
         try
            {
                engine.ReadFromBitmap((int)e.hBitmap, 0);
                if (engine.Plates.Count > 0)
                {
                    string text =  "";
                    for (int i = 0; i < engine.Plates.Count; i++)
                    {
                        if (text.Length > 0)
                            text += "\r\n";
                        text += engine.Plates.get_Item(i).Text + "::" + DateTime.Now.Date.ToShortDateString() + "::" + DateTime.Now.TimeOfDay.ToString();
                        
                    }
                    SetText(text, labelPlates);
                }             
            }
            catch (COMException ex)
            {
                string errorText = "";
                engine.GetLastErrorText(ref errorText);
                //MessageBox.Show(errorText + " (ErrorCode = " + ex.ErrorCode.ToString() + ")");
            }
            GC.Collect();
            
        }
 
        private void cmbVideoSource_SelectedIndexChanged(object sender, EventArgs e)
        {
            axVideoCapture1.CurVideoSourceName = cmbVideoSource.SelectedItem.ToString();
            
        }
        
        private void btnDeviceProperties_Click(object sender, EventArgs e)
        {
            axVideoCapture1.ShowDeviceProperties();
        }
 
        private void btnOutputProperties_Click(object sender, EventArgs e)
        {
            axVideoCapture1.ShowOutputProperties();
        }
1
eugene0001
20 / 17 / 4
Регистрация: 07.02.2010
Сообщений: 59
16.04.2010, 14:25 6
Лучший ответ Сообщение было отмечено как решение

Решение

ну а что тут переписывать? смотри.

1) добавишь библиотеку aforge
2) из неё высунешь контрол,который воспроизводит видео
3) инициализируешь видео,кодом который в первой цитате
4) добавишь обработчик события onNewFrame и готово)

http://www.aforgenet.com/articles/step_to_stereo_vision/ вот тут примерчики
3
lifestyle
Mobile Developer
234 / 230 / 18
Регистрация: 10.05.2009
Сообщений: 917
16.04.2010, 14:34  [ТС] 7
что за videoSourcePlayer1,откуда он взялся?
0
eugene0001
20 / 17 / 4
Регистрация: 07.02.2010
Сообщений: 59
16.04.2010, 14:41 8
эт контрол,который добавляется на форму из библиотеки для воспроизведения видео
1
lifestyle
Mobile Developer
234 / 230 / 18
Регистрация: 10.05.2009
Сообщений: 917
16.04.2010, 14:53  [ТС] 9
что то я его найти не могу.я совсем новичок в с шарп))))
0
eugene0001
20 / 17 / 4
Регистрация: 07.02.2010
Сообщений: 59
16.04.2010, 15:39 10
Лучший ответ Сообщение было отмечено как решение

Решение

зайди на панель элементов для формы,щелкни на ней правой кнопкой и выбери вкладку "выбрать элементы",в компонентах net framework в фильтре напиши aforge.там в именах появятся контрол VideoSourcePlayer,выбирай его и жми ок.он появится на панели

Добавлено через 8 минут
кстати, за интересный ты проект взялся,судя из твоего блога на хабрахабре я тож занимаюсь сейчас управлением компьютером жестами
4
lifestyle
Mobile Developer
234 / 230 / 18
Регистрация: 10.05.2009
Сообщений: 917
16.04.2010, 16:34  [ТС] 11
Цитата Сообщение от eugene0001 Посмотреть сообщение
зайди на панель элементов для формы,щелкни на ней правой кнопкой и выбери вкладку "выбрать элементы",в компонентах net framework в фильтре напиши aforge.там в именах появятся контрол VideoSourcePlayer,выбирай его и жми ок.он появится на панели

Добавлено через 8 минут
кстати, за интересный ты проект взялся,судя из твоего блога на хабрахабре я тож занимаюсь сейчас управлением компьютером жестами
ну у теюя посерьезней проектик)))
да я сейчас на полуготовом все леплю нада сдать через месяц.а вот будет время переделаю уже сам все напишу кроме алгоритма самого по разспознованию .а то на данный момент есть недостатки DEMO-mode))))
Но не многие заинтересовались этим вопросом)

Добавлено через 40 минут
все равно чето не получается((( сделал все как ты сказал и всеравно(
0
eugene0001
20 / 17 / 4
Регистрация: 07.02.2010
Сообщений: 59
16.04.2010, 17:09 12
а что именно не получается?
0
lifestyle
Mobile Developer
234 / 230 / 18
Регистрация: 10.05.2009
Сообщений: 917
16.04.2010, 17:15  [ТС] 13
никакого эффекта((
вот что написал
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
 FilterInfoCollection videodevices;
            VideoCaptureDevice videoSource;
            videodevices = new FilterInfoCollection(FilterCategory.VideoInputDevice);
            videoSource = new VideoCaptureDevice(videodevices[0].MonikerString);
            videoSourcePlayer1.VideoSource = videoSource;
            videoSource.Start();
           
            private void videoSourcePlayer1_NewFrame(object sender, ref Bitmap image)
        {
            pictLastPhoto.Image = image;
            pictLastPhoto.Load(); 
  
        }
1
body90
366 / 299 / 18
Регистрация: 26.05.2009
Сообщений: 2,676
01.12.2010, 02:37 14
А можно как-то с помощью этой библиотеки еще и записывать видео с камеры?
0
Shaman163
5 / 5 / 1
Регистрация: 22.12.2011
Сообщений: 134
21.03.2012, 11:37 15
Ребята помогите пожалуйста
дело в том что я описал эвент NewFrame
однако он у меня не работает как не крути
как его вызвать после включения вебки?
без него как я понимаю незя вытащить изображение с videoSourcePlayer
0
body90
366 / 299 / 18
Регистрация: 26.05.2009
Сообщений: 2,676
21.03.2012, 12:43 16
А Вы ко всем событиям подписались?
0
daruwanov
74 / 55 / 8
Регистрация: 10.03.2011
Сообщений: 354
21.03.2012, 13:47 17
eugene0001, А вы случаем не из Украины? и не выступали с проектом по управлению жестами на GoldenByte
0
КиряК
0 / 0 / 0
Регистрация: 31.05.2012
Сообщений: 22
01.06.2012, 08:40 18
Кто нибудь знает в чем ошибка?
Строка CONNECTING... идет, а картинки с камеры нет.
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
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using AForge.Video;
using AForge.Video.VFW;
using AForge.Vision;
using AForge.Video.DirectShow;
namespace LedTest
{
    public partial class MainForm : Form
    {
        public MainForm()
        {
            InitializeComponent();
        }
        
        FilterInfoCollection videodevices;
        VideoCaptureDevice videoSource;
        private void button1_Click(object sender, EventArgs e)
        {
            
            videodevices = new FilterInfoCollection(FilterCategory.VideoInputDevice);
            videoSource = new VideoCaptureDevice(videodevices[0].MonikerString);
            videoSourcePlayer.VideoSource = videoSource;
            videoSource.Start();
        }
        private void videoSourcePlayer_NewFrame(object sender, ref Bitmap image)
        {
        }
 
         
    }
}
0
just_dude
11 / 11 / 2
Регистрация: 15.01.2012
Сообщений: 104
04.06.2012, 01:06 19
Цитата Сообщение от eugene0001 Посмотреть сообщение
зайди на панель элементов для формы,щелкни на ней правой кнопкой и выбери вкладку "выбрать элементы",в компонентах net framework в фильтре напиши aforge.там в именах появятся контрол VideoSourcePlayer,выбирай его и жми ок.он появится на панели
У меня отсутствует в компонентах библиотека, не подскажите как прикрутить её к студии?
0
body90
366 / 299 / 18
Регистрация: 26.05.2009
Сообщений: 2,676
04.06.2012, 02:48 20
КиряК, а где эта строка "CONNECTING..."? Я в коде её не вижу.
0
04.06.2012, 02:48
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.06.2012, 02:48

Захват содержимое Клипбоарда
Я думал , что есть что то на подобии WM_CLIPBOARD , но ничего не нашел( Как...

Захват кадра RTSP
Добрый день форумчане. Есть ip камера которая выдает только поток rtsp -...

Захват звука с динамиков
С помощью managedDirectx реализовал запись звука с микрофона.Как реализовать...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru