Форум программистов, компьютерный форум CyberForum.ru
CyberForum.ru - форум программистов и сисадминов > > > >
Восстановить пароль Регистрация
 
kill_s
Новичок
0 / 0 / 0
Регистрация: 27.02.2011
Сообщений: 38
27.02.2011, 22:12     захват видео изображения с веб-камеры   #1
Возникли проблемы при создании массива в C#.В общем дело обстоит так: имеется захват видео изображения с веб-камеры,необходимо сделать, чтобы по клику кнопочки, сохранялось текущее изображение с камеры в массив(чтобы это происходило каждый раз по клику)......Я так понимаю для хранения изображений необходимо создать byte массив и там уже размещать картинки...а как это сделать не пойму...помогите!!!!!!!
AdAgent
Объявления
27.02.2011, 22:12     захват видео изображения с веб-камеры
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.02.2011, 22:12     захват видео изображения с веб-камеры
Посмотрите здесь:

C# Веб-калькулятор
C# Как организовать группу Checkbox(как ячейки камеры)?
C# наложение изображения поверх другого изображения
C# .NET 4.x Вывод камеры на форму.
C# .NET 4.x Захват курсора мыши из игры.
kl14_11
Форумчанин
17 / 17 / 0
Регистрация: 02.11.2009
Сообщений: 118
27.02.2011, 22:30     захват видео изображения с веб-камеры   #2
Массив вот так создаётся:
Код C#
1
byte[] data = new byte[1024];
kill_s
Новичок
0 / 0 / 0
Регистрация: 27.02.2011
Сообщений: 38
28.02.2011, 08:58  [ТС]     захват видео изображения с веб-камеры   #3
Цитата Сообщение от kl14_11 Посмотреть сообщение
Массив вот так создаётся:
Код C#
1
byte[] data = new byte[1024];
как создавать то я знаю, а вот как туда размещать картинки, каждый раз кликая по кнопке, это проблема...
Евгений М.
Форумчанин
991 / 932 / 30
Регистрация: 28.02.2010
Сообщений: 2,702
Записей в блоге: 1
28.02.2011, 09:11     захват видео изображения с веб-камеры   #4
Попробуйте через ImageList.
Код C#
1
ImageList1.Images.Add(...)
kill_s
Новичок
0 / 0 / 0
Регистрация: 27.02.2011
Сообщений: 38
28.02.2011, 10:56  [ТС]     захват видео изображения с веб-камеры   #5
Возможно я как-то неправильно объяснил суть вопроса, но в общем попробую более подробнее пояснить

Код C#
1
2
3
4
5
6
private void button4_Click(object sender, EventArgs e)
        {
            pictureBox2.Image = pictureBox1.Image;
            savear = new byte[1024];
            pictureBox2.Image = savear;
        }
я делаю так вот.....А он мне пишет, Неявное преобразование типа "byte[]" в "System.Drawing.Image" невозможно .....

то делать? как быть?

Добавлено через 3 минуты
Цитата Сообщение от Евгений М. Посмотреть сообщение
Попробуйте через ImageList.
Код C#
1
ImageList1.Images.Add(...)
насколько мне известно в ImageList можно добавлять существующие картинки, а у меня их нет, они появляются только после того, как кликнешь по кнопке, то есть:
Код C#
1
pictureBox2.Image = pictureBox1.Image;
AdAgent
Объявления
28.02.2011, 10:56     захват видео изображения с веб-камеры
kl14_11
Форумчанин
17 / 17 / 0
Регистрация: 02.11.2009
Сообщений: 118
28.02.2011, 12:12     захват видео изображения с веб-камеры   #6
Как вы вообще получаете текущее изображение с камеры, в чём оно у вас хранится? В каком типе?
kill_s
Новичок
0 / 0 / 0
Регистрация: 27.02.2011
Сообщений: 38
28.02.2011, 12:22  [ТС]     захват видео изображения с веб-камеры   #7
Цитата Сообщение от kl14_11 Посмотреть сообщение
Как вы вообще получаете текущее изображение с камеры, в чём оно у вас хранится? В каком типе?
Изображение с камеры получаю с помощью подключаемой библиотеки WebCam_Capture.dll, потом оно транслируется через обычный picturebox и нигде оно не хранится.....Изображение идет в реалтайм....
lifestyle
Mobile Developer
218 / 214 / 4
Регистрация: 10.05.2009
Сообщений: 914
28.02.2011, 14:20     захват видео изображения с веб-камеры   #8
откуда помещается изображения в picturebox?из какого то stream'a или из массива?

Добавлено через 1 минуту
Цитата Сообщение от kill_s Посмотреть сообщение
Изображение с камеры получаю с помощью подключаемой библиотеки WebCam_Capture.dll, потом оно транслируется через обычный picturebox и нигде оно не хранится.....Изображение идет в реалтайм....
приведи код получения картинки с dll твоей pictureBox'у
Casper-SC
Форумчанин
28.02.2011, 19:29
  #9

Не по теме:

Цитата Сообщение от kill_s Посмотреть сообщение
Изображение с камеры получаю с помощью подключаемой библиотеки WebCam_Capture.dll, потом оно транслируется через обычный picturebox и нигде оно не хранится.....Изображение идет в реалтайм....
Она бесплатна для коммерческого использования?

kill_s
Новичок
0 / 0 / 0
Регистрация: 27.02.2011
Сообщений: 38
28.02.2011, 20:56  [ТС]     захват видео изображения с веб-камеры   #10
Вот код получения изображения с камеры:
Код 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
 class Cam
    {
        private int FrameNumber = 30;
        private WebCamCapture webcam;
        private System.Windows.Forms.PictureBox _FrameImage;
        public void InitializeWebCam(ref System.Windows.Forms.PictureBox ImageControl)
        {
            webcam = new WebCamCapture();
            webcam.FrameNumber = ((ulong)(0ul));
            webcam.TimeToCapture_milliseconds = FrameNumber;
            webcam.ImageCaptured += new WebCamCapture.WebCamEventHandler(webcam_ImageCaptured);
            _FrameImage = ImageControl;
        }
 
        void webcam_ImageCaptured(object source, WebcamEventArgs e)
        {
            _FrameImage.Image = e.WebCamImage;
        }
 
        public void start()
        {
            webcam.TimeToCapture_milliseconds = FrameNumber;
            webcam.Start(0);
        }
вот так вот это выглядит.......блин...неужели я совсем плохо все объясняю?......мне просто надо, что бы по клику картинка помещалась в массив,для дальнейшей обработки ее...

Код C#
1
2
3
4
5
6
 private void button4_Click(object sender, EventArgs e)
        {
            pictureBox2.Image = pictureBox1.Image;
            savear = new byte[1024];
            pictureBox2.Image = savear;
            }
Вот, то что я хотел сделать сам, но выдается ошибка...про неявное преобразование byte System.Drawing.Image невозможно.....в общем что делать не знаю......ведь надо то всего из picturebox1 передать изображение во второй picturebox и сохранить в массив....

Добавлено через 53 секунды
Цитата Сообщение от Casper-SC Посмотреть сообщение

Не по теме:



Она бесплатна для коммерческого использования?

абсолютно бесплатна, а разве есть смысл от того бесплатна она или нет?
kl14_11
Форумчанин
17 / 17 / 0
Регистрация: 02.11.2009
Сообщений: 118
28.02.2011, 21:44     захват видео изображения с веб-камеры   #11
Возможно вам вместо обычного массива байт
Код C#
1
savear = new byte[1024];
стоит использовать
Код C#
1
Bitmap savear = new Bitmap(200, 100);
Класс Bitmap - карта бит, её можно присваивать Image
Код C#
1
2
3
pictureBox2.Image = pictureBox1.Image;
            Bitmap savear = new Bitmap(200, 100);
            pictureBox2.Image = savear;
С помощью битмапа и рисовать можно.
lifestyle
Mobile Developer
218 / 214 / 4
Регистрация: 10.05.2009
Сообщений: 914
01.03.2011, 01:19     захват видео изображения с веб-камеры   #12
Цитата Сообщение от kill_s Посмотреть сообщение
Вот код получения изображения с камеры:

Код C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
[FONT=monospace]class Cam
    {         private int FrameNumber = 30; 
        private WebCamCapture webcam;       
  private System.Windows.Forms.PictureBox _FrameImage;  
       public void InitializeWebCam(ref System.Windows.Forms.PictureBox ImageControl)    
     {            
 webcam = new WebCamCapture();     
        webcam.FrameNumber = ((ulong)(0ul));         
    webcam.TimeToCapture_milliseconds = FrameNumber; 
            webcam.ImageCaptured += new WebCamCapture.WebCamEventHandler(webcam_ImageCaptured);  
           _FrameImage = ImageControl;     
    }          
 void webcam_ImageCaptured(object source, WebcamEventArgs e)     
    {          
   _FrameImage.Image = e.WebCamImage;     
    }       
    public void start()    
     {             webcam.TimeToCapture_milliseconds = FrameNumber;      
      webcam.Start(0);       
  }
[/FONT]


вот так вот это выглядит.......блин...неужели я совсем плохо все объясняю?......мне просто надо, что бы по клику картинка помещалась в массив,для дальнейшей обработки ее...


Код C#
1
2
3
4
5
6
7
8
[FONT=monospace]
private void button4_Click(object sender, EventArgs e)     
    {        
     pictureBox2.Image = pictureBox1.Image;    
         savear = new byte[1024];          
   pictureBox2.Image = savear;           
  }
[/FONT]
Вот, то что я хотел сделать сам, но выдается ошибка...про неявное преобразование byte System.Drawing.Image невозможно.....в общем что делать не знаю......ведь надо то всего из picturebox1 передать изображение во второй picturebox и сохранить в массив....

Добавлено через 53 секунды


абсолютно бесплатна, а разве есть смысл от того бесплатна она или нет?
а какие мемберы у _FrameImage, не ужели нету никакого типа data или байтового массива?? это раз.
два советую тебе для обработки изображения все же заюзать EMGU дотнетовская обертка для openCV -классная и удобная штука , сам ее сейчас использую в проекте.
и три во ттебе универсальный инструмент
http://wsp.beon.ru/24778-086-preobra...-obratno.zhtml
kill_s
Новичок
0 / 0 / 0
Регистрация: 27.02.2011
Сообщений: 38
02.04.2011, 20:14  [ТС]     захват видео изображения с веб-камеры   #13
Всем спасибо за помощь!!!!!!!!!!!!
Правда у меня теперь другой вопрос? а как мне сделать теперь наложение двух картинок?Рассматриваемые ранее здесь на форуме методы не помогли(или я просто их не понимаю)...помогите. разъясните код(взято вот тут) :
Код 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
public static Bitmap MakeImage(Size ImgSize, Bitmap foreImg, Bitmap backImg, byte s)
{
    // ImgSize = размер картинки-результата, обе исходные картинки приводятся к указанному размеру
    // s прозрачность накладываемого изображения foreImg от 0 (100%) до 255 (0%)
    // результат наследует Альфа-канал фонового изображения
    // наложение использует Альфа-канал накладываемого изображения
    Bitmap fimg = new Bitmap(foreImg, ImgSize);
    Bitmap bimg = new Bitmap(backImg, ImgSize);
    Bitmap bmp = new Bitmap(ImgSize.Width, ImgSize.Height);
    for (int i = 0; i < bmp.Width; i++)
        for (int j = 0; j < bmp.Height; j++)
        {
            Color fm = fimg.GetPixel(i, j);
            Color bm = bimg.GetPixel(i, j);
            byte af = (byte)(fm.A * s / byte.MaxValue);
            byte a = bm.A;
            byte r = (byte)((fm.R * af + bm.R * (byte.MaxValue - af)) / byte.MaxValue);
            byte g = (byte)((fm.G * af + bm.G * (byte.MaxValue - af)) / byte.MaxValue);
            byte b = (byte)((fm.B * af + bm.B * (byte.MaxValue - af)) / byte.MaxValue);
            bmp.SetPixel(i, j, Color.FromArgb(a, r, g, b));
        }
    return bmp;
}
 
я понимаю что это функция, но как ее теперь прицепить к классу новому?
класс я создал, а вот эту функцию потом не могу вызвать из другого модуля программы, хотя вроде бы все подключил, просто когда пытаешься вызвать этот класс, он вызывается, но только там нету такой функции...а она написана в нем...что делать, как быть?помогите люди добрые!!!!!!!!
kl14_11
Форумчанин
17 / 17 / 0
Регистрация: 02.11.2009
Сообщений: 118
02.04.2011, 21:26     захват видео изображения с веб-камеры   #14
Возможно вы объявили функцию как static, тогда вам надо обращаться к ней не через экземпляр класса, а через имя класса. static-член один для всех экземпляров.
Или наоборот не static, тогда вам надо вначале создать экземпляр класса и через него к ней обращаться.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.04.2011, 22:30     захват видео изображения с веб-камеры
Еще ссылки по теме:

C# Как получить фото с веб-камеры Logitech
C# Захват фрейма с веб камеры
C# Захват аудио
kill_s
Новичок
0 / 0 / 0
Регистрация: 27.02.2011
Сообщений: 38
02.04.2011, 22:30  [ТС]     захват видео изображения с веб-камеры   #15
Всем спасибо!!! проблема решена!!!!но тема еще не закрыта )))))
Yandex
Объявления
02.04.2011, 22:30     захват видео изображения с веб-камеры
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Опции темы

Текущее время: 21:03. Часовой пояс GMT +4.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.7 PL3
Copyright ©2000 - 2014, vBulletin Solutions, Inc.
Яндекс.Метрика