Получить изображение из видео
Привет,
Я пытаюсь написать приложение, которое может получить доступ к камерам, подключенным к ПК, записать видео и получить изображение с видео. Я использую AForge.Сетевые библиотеки для доступа к камерам: http://www.aforgenet.com/framework/[^]
Я не знаю как называется это событие AForge.Видео.NewFrameEventHandler работает. В этом коде событие возвращать null к растровому изображению вместо того, чтобы новую раму из видео или событие не называется Я хочу получать кадры из видео в поле изображения каждый раз, когда кадр делает что-то вроде видеопотока, и после нажатия на кнопку остановки я хочу, чтобы последнее изображение оставалось отображенным в поле изображения . Кто-нибудь знает, как это сделать? И почему мой код не работает?
Код:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using AForge.Video.DirectShow; using System.Drawing; using AForge.Video; namespace CameraDevice { public class CameraImaging { // enumerate video devices public FilterInfoCollection videoDevices = new FilterInfoCollection(FilterCategory.VideoInputDevice ); //camera public VideoCaptureDevice videoSource; //screen shot public Bitmap bitmap; public CameraImaging() { // create video source VideoCaptureDevice videoSource = new VideoCaptureDevice(videoDevices[0].MonikerString ); // set NewFrame event handler videoSource.NewFrame += new NewFrameEventHandler( video_NewFrame ); } public void StartVideo(VideoCaptureDevice videoSource) { // start the video source videoSource.Start(); // ... } public void StopVideo(VideoCaptureDevice videoSource) { // stop the video source videoSource.Stop(); // ... } private void video_NewFrame( object sender, NewFrameEventArgs eventArgs ) { // get new frame bitmap = eventArgs.Frame; // process the frame } } }
Аналогичный код находится здесь: http://www.aforgenet.com/framework/features/directshow_video.html[^]
В Windows Forms я запускаю это видео в потоке, который выполняет этот метод:
private void VideoRecording() { camImg.videoSource.Start(); while (!StopVideo) { pictureBox1.Image = camImg.bitmap; pictureBox1.Invalidate(); } camImg.videoSource.Stop(); }
Спасибо Вам за ваши ответы!
-Пепин з Хане
Sushil Mate
прежде всего, вы можете захватить видео? если да, то событие становится называется?
поставить отладки указатель &амп; проверить значение растрового изображения..
Pepin z Hane
Я пытаюсь записать видео, но не знаю, как это сделать. Я могу распознавать только устройства камеры, поэтому пользователь может выбрать камеру из поля со списком. И я не знаю, называется ли это событие. Я так не думаю, потому что растровое изображение является нулевым во время отладки, как я уже писал.
Sushil Mate
вам нужно сначала захватить видео, а затем перейти к кадру изображения.. разделите работу и попробуйте решить ее :)
Pepin z Hane
Если бы я только знал, как это сделать... :-)
Sushil Mate
У OriginalGriff есть идея, идите с ней :)
felix pascal
привет, пожалуйста, видеоисточник.NewFrame += Новый AForge.Видео.NewFrameEventHandler(video_NewFrame) не работает для меня. моя визуальная студия жалуется: частная суб video_NewFrame(как byval отправителя как объект, как byval EventArgs в качестве NewFrameEventArgs) - это событие и нельзя назвать напрямую, использовать создать событие, чтобы вызвать событие.
Если я помещу эту строку кода вне своей формы, она будет жаловаться, что videosource не объявлен, тогда как я объявил его как тусклую переменную поверх своей формы
пожалуйста, любезно помогите мне. Спасибо