/// <summary> /// ランニングアベレージ操作 (新しい要素を追加時に実行) /// </summary> /// <param name="elem">追加する要素</param> void run_ave(ImageData elem) { if (elem.id % bg_interval == 0) { //Cv.RunningAvg(elem.img, background_image, 0.1); Cv2.AccumulateWeighted(elem.img, background_image, 0.1, null); } }
public void Run() { //https://drive.google.com/file/d/1rc13wZ9zC03ObG5zB3uccUtsg_rsI8hC/view VideoCapture cap = VideoCapture.FromFile("Input.mp4"); Mat avg = new Mat(); Mat output = new Mat(); while (true) { Mat frame = new Mat(); // Capture frame-by-frame cap.Read(frame); // If the frame is empty, break immediately if (frame.Empty()) { break; } if (cap.Get(CaptureProperty.PosFrames) == 1) { frame.ConvertTo(avg, MatType.CV_32F); } Cv2.AccumulateWeighted(frame, avg, 0.0005, null); Cv2.ConvertScaleAbs(avg, output); Cv2.ImShow("output", output); // Press ESC on keyboard to exit char c = (char)Cv2.WaitKey(25); if (c == 27) { break; } frame.Release(); } // When everything done, release the video capture object cap.Release(); avg.Release(); output.Release(); // Closes all the frames Cv2.DestroyAllWindows(); }