Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.10.2021, 09:04   #1
Andrey1702
 
Регистрация: 16.09.2021
Сообщений: 8
По умолчанию Передача скриншота в динамический picturebox создаваемый в flowLayoutPanel

Здравствуйте! пытаюсь создать программу которая будет скриншоты передавать в динамически создаваемые Picturebox, во всем этом деле я дилетант, в данный момент сигнал с камеры есть, но нигде не могу найти как прописать события кнопки Создать скриншот чтобы при этом изображение с камеры "улетало" в создаваемый picturebox в flowLayoutPanel, при этом чтобы цикл повторялся при каждом нажатии на кнопку, и все изображения создавались в flowLayoutPanel

Код:
public partial class Form2 : Form
    {
        private VideoCapture capture = null;
 
        private DsDevice[] webCams = null;
 
        private int selectedCameraId;
 
        public Form2()
        {
            InitializeComponent();
        }
 
        private void Form2_FormClosed(object sender, FormClosedEventArgs e)
        {
            Application.Exit();
        }
 
        private void tabPage1_Click(object sender, EventArgs e)
        {
 
        }
 
 
 
        private void pictureBox1_Click(object sender, EventArgs e)
        {
 
        }
 
        private void toolStripDropDownButton1_Click(object sender, EventArgs e)
        {
 
        }
        //загрузка формы
        private void Form2_Load(object sender, EventArgs e)
        {
            webCams = DsDevice.GetDevicesOfCat(FilterCategory.VideoInputDevice);
 
            for (int i = 0; i < webCams.Length; i++)
            {
                toolStripComboBox1.Items.Add(webCams[i].Name);
            }
        }
 
        private void toolStripComboBox1_Click(object sender, EventArgs e)
        {
 
        }
 
        private void toolStripComboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            selectedCameraId = toolStripComboBox1.SelectedIndex;
        }
 
        private void toolStripButton1_Click(object sender, EventArgs e)
        {
            try
            {
                if (webCams.Length == 0)
                {
                    throw new Exception("Нет доступных камер!");
                }
                else if (toolStripComboBox1.SelectedItem == null)
                {
                    throw new Exception("Необходимо выбрать камеру!");
                }
                else if (capture != null)
                {
                    capture.Start();
                }
                else
                {
                    capture = new VideoCapture(selectedCameraId);
 
                    capture.ImageGrabbed += Capture_ImageGrabbed;
 
                    capture.Start();
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Ошибка!", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
 
        private void Capture_ImageGrabbed(object sender, EventArgs e)
        {
            try
            {
                Mat m = new Mat();
 
                capture.Retrieve(m);
 
                pictureBox1.Image = m.ToImage<Bgr, byte>().Flip(Emgu.CV.CvEnum.FlipType.None).Bitmap;
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Ошибка!", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
 
        private void pictureBox1_Click_1(object sender, EventArgs e)
        {
 
        }
 
        private void toolStripTextBox3_Click(object sender, EventArgs e)
        {
 
        }
 
        private void выходToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }
 
        private void toolStripButton2_Click(object sender, EventArgs e)
        {
 
        }
    }
}
Andrey1702 вне форума Ответить с цитированием
Старый 04.10.2021, 09:05   #2
Andrey1702
 
Регистрация: 16.09.2021
Сообщений: 8
По умолчанию

Пытался применить то что нашел по отображению изображений из папки в flowLayoutPanel, но тут тупик

Код:
private void toolStripButton2_Click(object sender, EventArgs e)
        {                       
            try
            {
                Mat m = new Mat();
 
                capture.Retrieve(m);
 
                pictureBox1.Image = new PictureBox(m.ToImage<Bgr, byte>().Flip(Emgu.CV.CvEnum.FlipType.None).Bitmap);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Ошибка!", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            foreach (string image in pictureBox1)
            {
                // create a new control
                PictureBox pb = new PictureBox();
 
                // assign the image
                pb.Image = new Bitmap(image);
 
                // stretch the image
                pb.SizeMode = PictureBoxSizeMode.StretchImage;
 
                // set the size of the picture box
                pb.Height = pb.Image.Height / 10;
                pb.Width = pb.Image.Width / 10;
 
                // add the control to the container
                flowLayoutPanel1.Controls.Add(pb);
            }
        }

Последний раз редактировалось Andrey1702; 04.10.2021 в 09:31. Причина: добавление информации
Andrey1702 вне форума Ответить с цитированием
Старый 04.10.2021, 15:54   #3
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию

Код:
bool GetBitmapFlag = false;
 private void button4_Click(object sender, EventArgs e)
        {
            FilterInfoCollection videoDevices = new FilterInfoCollection(FilterCategory.VideoInputDevice);             
            VideoCaptureDevice videoSource = new VideoCaptureDevice(videoDevices[0].MonikerString); 
            videoSource.NewFrame += VideoSource_NewFrame;
            videoSource.Start();
        }

private void VideoSource_NewFrame(object sender, Accord.Video.NewFrameEventArgs eventArgs)
        {
            if (GetBitmapFlag)
            {
                this.Invoke(new MethodInvoker(() =>
                {
                    var pic = new PictureBox() { Image = bmp, SizeMode = PictureBoxSizeMode.StretchImage };
                    flowLayoutPanel1.Controls.Add(pic);
                }));
                GetBitmapFlag = false;
            }
        }

        private void button3_Click_1(object sender, EventArgs e)
        {
            if (!GetBitmapFlag)
                GetBitmapFlag = true;
        }
Ну как то так
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
WorldMaster вне форума Ответить с цитированием
Старый 04.10.2021, 19:20   #4
Andrey1702
 
Регистрация: 16.09.2021
Сообщений: 8
По умолчанию

WorldMaster, Спасибо, попробую, тут через Aforg?
просто не вижу кода для реализации EMGUCV
Andrey1702 вне форума Ответить с цитированием
Старый 05.10.2021, 07:57   #5
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию

Цитата:
Сообщение от Andrey1702 Посмотреть сообщение
тут через Aforg?
Да.


Цитата:
Сообщение от Andrey1702 Посмотреть сообщение
просто не вижу кода для реализации EMGUCV
Принцип идентичный. EMGUCV реализуйте сами.
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
WorldMaster вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Передача скриншота rust-02 Работа с сетью в Delphi 2 14.10.2010 11:50
Динамический Ttimer передача параметра Horus92 Компоненты Delphi 3 01.06.2010 09:03
передача скриншота с компа на телефон через интернет sum42 Помощь студентам 3 21.09.2009 14:42
передача скриншота olchick Работа с сетью в Delphi 13 04.06.2009 02:01
Передача скриншота Terran Работа с сетью в Delphi 1 17.12.2007 21:41