Захват изображения с камеры - C#
Формулировка задачи:
Есть некая камера со своим SDK. Пишу простенькое приложение для захвата с неё изображения. Ниже пробный код, который по нажатию кнопки начинает захват. Забрать один кадр получается, pictureBox1 отображает корректно.
Если пытаюсь завернуть в бесконечный цикл, то ни одного кадра pictureBox1 не отрисовывает, так и остается пустым.
Если с первым кодом регулярно нажимать на кнопку, то кадр обновляется.
ЧЯДНТ?
СПС!
IntPtr ptr = IntPtr.Zero; Bitmap bmp = new Bitmap(1280, 960, System.Drawing.Imaging.PixelFormat.Format24bppRgb); BitmapData bd; bd = bmp.LockBits(new Rectangle(0, 0, bmp.Width, bmp.Height), ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb); ptr = bd.Scan0; if (AICameraDll.getImageData(ptr, bd.Stride, -1)) { bmp.UnlockBits(bd); pictureBox1.Image = bmp; } else MessageBox.Show("Error");
IntPtr ptr = IntPtr.Zero; Bitmap bmp = new Bitmap(1280, 960, System.Drawing.Imaging.PixelFormat.Format24bppRgb); BitmapData bd; while (true) { bd = bmp.LockBits(new Rectangle(0, 0, bmp.Width, bmp.Height), ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb); ptr = bd.Scan0; if (AICameraDll.getImageData(ptr, bd.Stride, -1)) { bmp.UnlockBits(bd); pictureBox1.Image = bmp; //Thread.Sleep(1000); Пытался поставить задержу... Не помогает. } else MessageBox.Show("Error"); }
Решение задачи: «Захват изображения с камеры»
textual
Листинг программы
new Thread(() => { Bitmap[] buff = new Bitmap[2]; buff[0] = new Bitmap(1280, 960, System.Drawing.Imaging.PixelFormat.Format24bppRgb); buff[1] = new Bitmap(buff[0]); int i = 0; while (true) { Bitmap bmp = buff[i = ++i % 2]; BitmapData bd = bmp.LockBits(new Rectangle(0, 0, bmp.Width, bmp.Height), ImageLockMode.ReadWrite, bmp.PixelFormat); CopyMemory(bd.Scan0, source, (uint)(bd.Stride * bd.Height)); // тут копирование bmp.UnlockBits(bd); this.Invoke((MethodInvoker)delegate() { pictureBox1.Image = bmp; }); } }) { IsBackground = true }.Start();
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д