Пример #1
0
        private void abortButton_Click(object sender, RoutedEventArgs e)
        {
            if (processMovieThread.ThreadState == ThreadState.Suspended)
            {
                processMovieThread.Resume();
            }
            processMovieThread.Abort();

            processMovieThread = null;

            videoReader.Close();
            videoReader.Dispose();
            videoReader = null;

            processor = null;

            openFileButton.IsEnabled = true;
            abortButton.IsEnabled = false;
            startButton.Content = Properties.Resources.START_BUTTON_TEXT;
            startButton.IsEnabled = false;
            pathLabel.Content = Properties.Resources.DEFAULT_PATH_LABEL;
            botomStatusBarlabel.Content = Properties.Resources.WAIT_STATUS;
            frameCountLabel.Content = Properties.Resources.DEFAULT_FPS_LABEL;

            setInitialBitmaps();
        }
Пример #2
0
        private void processMovie()
        {
            if (videoReader.IsOpen)
            {
                Bitmap videoFrame;

                processor.Background = videoReader.ReadVideoFrame();

                int i = 0;

                while ((videoFrame = videoReader.ReadVideoFrame()) != null)
                {
                    Bitmap preprocess = processor.preprocessImage(videoFrame);
                    this.Dispatcher.Invoke(new Action(() => frameCountLabel.Content  = Properties.Resources.FPS_LABEL_BEGIN + (int)(++i / videoReader.FrameRate) + "s"));
                    this.Dispatcher.Invoke(new Action(() => preprocessedImage.Source = VideoProcessor.convertBitmap(preprocess)));

                    Bitmap diff = processor.findDifference(preprocess);
                    preprocess.Dispose();

                    this.Dispatcher.Invoke(new Action(() => differenceImage.Source = VideoProcessor.convertBitmap(diff)));

                    Bitmap final = processor.showMotion(videoFrame, diff);
                    diff.Dispose();

                    this.Dispatcher.Invoke(new Action(() => finalImage.Source = VideoProcessor.convertBitmap(final)));
                    final.Dispose();
                    videoFrame.Dispose();
                }
                i = 0;
                videoReader.Dispose();
                videoReader.Close();
                restart();
            }
        }
Пример #3
0
        private void abortButton_Click(object sender, RoutedEventArgs e)
        {
            if (processMovieThread.ThreadState == ThreadState.Suspended)
            {
                processMovieThread.Resume();
            }
            processMovieThread.Abort();

            processMovieThread = null;

            videoReader.Close();
            videoReader.Dispose();
            videoReader = null;

            processor = null;

            openFileButton.IsEnabled    = true;
            abortButton.IsEnabled       = false;
            startButton.Content         = Properties.Resources.START_BUTTON_TEXT;
            startButton.IsEnabled       = false;
            pathLabel.Content           = Properties.Resources.DEFAULT_PATH_LABEL;
            botomStatusBarlabel.Content = Properties.Resources.WAIT_STATUS;
            frameCountLabel.Content     = Properties.Resources.DEFAULT_FPS_LABEL;

            setInitialBitmaps();
        }
Пример #4
0
        private void prepareForPlay(string path)
        {
            if ((path != null) || (path.Length != 0))
            {
                processMovieThread      = new Thread(new ThreadStart(processMovie));
                processMovieThread.Name = Properties.Resources.PROCESS_MOVIE_THREAD_TITLE;

                processor   = new VideoProcessor();
                videoReader = new VideoFileReader();

                videoReader.Open(path);
            }
        }
Пример #5
0
        private void setInitialBitmaps()
        {
            Bitmap initial = new Bitmap(320, 240);

            for (int x = 0; x < initial.Width; x++)
            {
                for (int y = 0; y < initial.Height; y++)
                {
                    System.Drawing.Color pixelColor = initial.GetPixel(x, y);
                    System.Drawing.Color newColor   = System.Drawing.Color.FromArgb(pixelColor.R, 0, 0);
                    initial.SetPixel(x, y, newColor);
                }
            }

            preprocessedImage.Source = VideoProcessor.convertBitmap(initial);
            differenceImage.Source   = VideoProcessor.convertBitmap(initial);
            finalImage.Source        = VideoProcessor.convertBitmap(initial);

            initial.Dispose();
        }
Пример #6
0
        private void prepareForPlay(string path)
        {
            if ((path != null) || (path.Length != 0))
            {
                processMovieThread = new Thread(new ThreadStart(processMovie));
                processMovieThread.Name = Properties.Resources.PROCESS_MOVIE_THREAD_TITLE;

                processor = new VideoProcessor();
                videoReader = new VideoFileReader();

                videoReader.Open(path);
            }
        }