Exemple #1
0
 /// <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();
        }