Обнаружение движения захвата кадра Emgucv
извините за мой английский, я хочу получить захват кадра при перемещении по загруженному видео, как я могу это сделать? Например, есть способ, взять кадр захвата, пока машина находится в пути, но,
не делайте кадровый захват, пока дорога пуста. мои коды выглядят следующим образом;
VideoCapture capture = null; List<Mat> image_array = new List<Mat>(); private void ProcessFrame(object sender, EventArgs arg) { Mat frame = new Mat(); capture.Retrieve(frame, 0); ımageBox1.Image = frame; Thread.Sleep((int)capture.GetCaptureProperty(Emgu.CV.CvEnum.CapProp.Fps)); try { string time = DateTime.Now.ToString("yyyy_MM_dd_HH_mm_ss_ffff"); frame = capture.QueryFrame(); Bitmap captureBitmap = new Bitmap(frame.Bitmap); captureBitmap.Save(@"D:\FrameCapture\Capture-" + time + ".jpg", ImageFormat.Jpeg); if (frame != null) { image_array.Add(frame); } else { Application.Idle -= ProcessFrame; } } catch (Exception) { } }
Я хочу что-то вроде этого;
if(moved) { captureBitmap.Save(......) }
как я могу это сделать?
Что я уже пробовал:
for (int i = 0; i < image_array.Count; i++) { CvInvoke.AbsDiff(image_array[i], image_array[i + 1], diffFrame); if (diffFrame!=null) { croppedBitmap.Save(@"D:\FrameCapture\Capture-" + time + ".jpg", ImageFormat.Jpeg); } }