public void CreateVideo(int lastStep, int snapTime)
        {
            if (!Directory.Exists(outputPath))
            {
                Directory.CreateDirectory(outputPath);
            }
            var a = new VideoWriter(outputPath + videoName, Emgu.CV.CvInvoke.CV_FOURCC('M', 'J', 'P', 'G'), 30, width, height, true);

            for (var i = 0; i <= lastStep; i++)
            {
                if ((i + 1) % 100 == 0)
                {
                    GC.Collect();
                }
                if ((i + 1) % 50 == 0)
                {
                    System.Console.WriteLine("making movie: " + i);
                }

                if ((i + 1) % snapTime != 0)
                {
                    continue;
                }
                var addPic = new Bitmap(Image.FromFile(inputPath + i + ".jpg"));
                a.WriteFrame(new Image <Rgb, byte>(addPic));
                addPic.Dispose();
                Thread.Sleep(20);
            }

            a.Dispose();
        }
Esempio n. 2
0
        static void Main(string[] args)
        {
            string name = DateTime.Now.ToString("yyyyMMddhhmmss");

            Console.WriteLine("开始生成...");

            using (VideoWriter videoWriter = new VideoWriter("c:\\test_" + name + ".avi"
                                                             , VideoWriter.FourCC('M', 'J', 'P', 'G')
                                                             , 1                          //每秒播放帧数
                                                             , new Size(800, 600), true)) //视频大小
            {
                string        filePath      = System.AppDomain.CurrentDomain.BaseDirectory;
                DirectoryInfo directoryInfo = new DirectoryInfo(filePath + "\\image");

                var filePathList = directoryInfo.GetFiles();

                foreach (var item in filePathList)
                {
                    Mat tempCCv = Cv2.ImRead(item.FullName);
                    Mat result  = new Mat();
                    Cv2.Resize(tempCCv, result, new Size(800, 600));//必须将图片的大小调整为视频的大小
                    //插入4帧相同的图片
                    videoWriter.Write(result);
                    videoWriter.Write(result);
                    videoWriter.Write(result);
                    videoWriter.Write(result);
                }
                videoWriter.Release();
                Cv2.DestroyAllWindows();
            }

            Console.Write("生成完成!路径c:\\test_" + name + ".avi,建议使用Windows Media Player播放");
            Console.Read();
        }
        private void M_capture_ImageGrabbed(object sender, EventArgs e)
        {
            Console.WriteLine("test: " + startIndex.ToString());
            startIndex++;


            if (fileChanged)
            {
                nameofRecording = nameofrecord_textbox.Text;
                destin          = directorytosave_textbox.Text;

                totalFrames = m_capture.GetCaptureProperty(Emgu.CV.CvEnum.CapProp.FrameCount);
                fps         = m_capture.GetCaptureProperty(Emgu.CV.CvEnum.CapProp.Fps);
                int    fourcc      = Convert.ToInt32(m_capture.GetCaptureProperty(Emgu.CV.CvEnum.CapProp.FourCC));
                int    frameHeight = Convert.ToInt32(m_capture.GetCaptureProperty(Emgu.CV.CvEnum.CapProp.FrameHeight));
                int    frameWidth  = Convert.ToInt32(m_capture.GetCaptureProperty(Emgu.CV.CvEnum.CapProp.FrameWidth));
                string destination = destin + nameofRecording + ".avi";
                videoWriter = new VideoWriter(destination, VideoWriter.Fourcc('I', 'Y', 'U', 'V'), fps, new System.Drawing.Size(frameWidth, frameHeight), true);
                fileChanged = false;
            }


            Mat m = new Mat();

            m_capture.Retrieve(m);
            // pictureBox1.Image = m.ToImage<Bgr, byte>().Bitmap;
            videoWriter.Write(m);



            //throw new NotImplementedException();
        }
Esempio n. 4
0
        static void Main()
        {
            //var reader = new CameraCapture(0); //capture from camera
            var reader = new FileCapture(Path.Combine(getResourceDir(), "Welcome.mp4"));

            reader.Open();

            var writer = new VideoWriter(@"output.avi", reader.FrameSize, /*reader.FrameRate does not work Cameras*/ 30); //TODO: bug: FPS does not work for cameras

            writer.Open();

            Bgr <byte>[,] frame = null;
            do
            {
                reader.ReadTo(ref frame);
                if (frame == null)
                {
                    break;
                }

                using (var uFrame = frame.Lock())
                { writer.Write(uFrame); }

                frame.Show(scaleForm: true);
            }while (!(Console.KeyAvailable && Console.ReadKey(true).Key == ConsoleKey.Escape));

            reader.Dispose();
            writer.Dispose();

            UI.CloseAll();
        }
        void StopRecording()
        {
            if (!_isRecording)
            {
                return;
            }

            //CvInvoke.CV_FOURCC('P','I','M','1')    = MPEG-1 codec
            //CvInvoke.CV_FOURCC('M','J','P','G')    = motion-jpeg codec (does not work well)
            //CvInvoke.CV_FOURCC('M', 'P', '4', '2') = MPEG-4.2 codec
            //CvInvoke.CV_FOURCC('D', 'I', 'V', '3') = MPEG-4.3 codec
            //CvInvoke.CV_FOURCC('D', 'I', 'V', 'X') = MPEG-4 codec
            //CvInvoke.CV_FOURCC('U', '2', '6', '3') = H263 codec
            //CvInvoke.CV_FOURCC('I', '2', '6', '3') = H263I codec
            //CvInvoke.CV_FOURCC('F', 'L', 'V', '1') = FLV1 codec

            using (VideoWriter vw = new VideoWriter(_fileName, 0, 30, 640, 480, true))
            {
                for (int i = 0; i < _videoArray.Count(); i++)
                {
                    vw.WriteFrame <Rgb, Byte>(_videoArray[i]);
                }
            }
            _fileName = string.Empty;
            _videoArray.Clear();
            _isRecording = false;
        }
Esempio n. 6
0
        public static void WriteAviFile(List <string> sourcefiles, string outfilename, double fps, FourCC fourcc)
        {
            Size size;

            using (var mat = new Mat(sourcefiles[0]))
            {
                size = mat.Size();
            }

            VideoWriter outV = null;

            foreach (var i in sourcefiles.Select((value, index) => new { value, index }))
            {
                using (var mat = new Mat(i.value))
                {
                    //var mat_2 = new Mat();
                    //Cv2.FastNlMeansDenoisingColored(mat, mat_2);

                    if (i.index == 0)
                    {
                        outV = new VideoWriter(outfilename, fourcc, fps, mat.Size());
                    }
                    outV.Write(mat);
                }
            }
            outV.Release();
        }
Esempio n. 7
0
        public void SaveVideo(int TimeLength)
        {
            List <Mat> frames = new List <Mat>();
            var        size   = new Size(640, 480);

            var start = DateTime.Now;

            while ((DateTime.Now - start).TotalMilliseconds < TimeLength / 2)
            {
                var mat = new Mat();
                if (capture.Read(mat))
                {
                    mat = mat.Resize(size);
                    frames.Add(mat);
                    System.Threading.Thread.Sleep(1);
                }
            }

            var frame_rate = frames.Count;
            var fmt        = VideoWriter.FourCC('m', 'p', '4', 'v');
            var writer     = new VideoWriter(VIDEOFILE_NAME, fmt, frame_rate, size);

            for (int i = 0; i < frames.Count; i++)
            {
                writer.Write(frames[i].Clone());
            }
            for (int i = frames.Count - 1; i >= 0; i--)
            {
                writer.Write(frames[i].Clone());
            }
            writer.Release();
        }
        public static void WriteVideo()
        {
            Size dsize = new Size(640, 480);

            // Opens a camera device
            using (VideoCapture capture = new VideoCapture(0))
                // Read movie frames and write them to VideoWriter
                using (VideoWriter writer = new VideoWriter("out.avi", -1, capture.Fps, dsize))
                    using (Mat frame = new Mat())
                        using (Mat gray = new Mat())
                            using (Mat canny = new Mat())
                                using (Mat dst = new Mat())
                                {
                                    Console.WriteLine("Converting each movie frames...");
                                    while (true)
                                    {
                                        // Read image
                                        capture.Read(frame);
                                        if (frame.Empty())
                                        {
                                            break;
                                        }

                                        //Console.CursorLeft = 0;
                                        //Console.Write("{0} / {1}", capture.PosFrames, capture.FrameCount);

                                        // grayscale -> canny -> resize
                                        Cv2.CvtColor(frame, gray, ColorConversionCodes.BGR2GRAY);
                                        Cv2.Canny(gray, canny, 100, 180);
                                        Cv2.Resize(canny, dst, dsize, 0, 0, InterpolationFlags.Linear);
                                        // Write mat to VideoWriter
                                        writer.Write(dst);
                                    }
                                }
        }
Esempio n. 9
0
        public void WriteAndCapture()
        {
            using var image = Image("lenna.png");

            {
                using var writer = new VideoWriter("dummy1.avi", FourCCValues.MJPG, 10, image.Size());
                Assert.True(writer.IsOpened());
                writer.Write(image);
                writer.Write(image);
                writer.Write(image);
            }

            using var capture = new VideoCapture("dummy1.avi");
            Assert.True(capture.IsOpened());
            Assert.Equal("CV_MJPEG", capture.GetBackendName());
            Assert.Equal(3, capture.FrameCount);

            using var frame1 = new Mat();
            using var frame2 = new Mat();
            using var frame3 = new Mat();
            using var frame4 = new Mat();
            Assert.True(capture.Read(frame1));
            Assert.True(capture.Read(frame2));
            Assert.True(capture.Read(frame3));
            Assert.False(capture.Read(frame4));
            Assert.False(frame1.Empty());
            Assert.False(frame2.Empty());
            Assert.False(frame3.Empty());
            Assert.True(frame4.Empty());

            Assert.Equal(image.Size(), frame1.Size());
        }
Esempio n. 10
0
        private void ConfigRecorder()
        {
            frameWritten = 0;
            String resultFilepath = Application.StartupPath + "\\" + DateTime.Now.ToString("yyMMddhhmmss") + "-result.avi";

            videoWriterRes = new VideoWriter(resultFilepath, 10, new Size(640, 480), true);
        }
Esempio n. 11
0
        private void Init()
        {
            appLog    = new Log();
            FPS       = new Timer();
            FPS_Count = 0;

            FPS.Interval = 500;
            FPS.Tick    += new EventHandler(FPS_Time_Tick);
            FPS.Start();

            fdh = new FaceDetectHaar();
            odh = new ObjectDetectHaar();

            listDataSource             = new BindingList <Record>();
            gcDisplayDetect.DataSource = listDataSource;

            isSave    = false;
            numRecord = 0;

            mode     = AppMode.Predict;
            faceRepo = new FaceDataRepositories();
            cusRepo  = new CustomerRepositories();

            videoW = new VideoWriter(HelperFeature.pathLogVideo + "\\" + DateTime.Now.ToFileName() + ".avi",
                                     16,
                                     new Size(HelperFeature.Camera_Width,
                                              HelperFeature.Camera_Height),
                                     true);
            isLoadDataView = 10;
        }
Esempio n. 12
0
        private static void show_image_cv(Image p, string name)
        {
            int   x, y, k;
            Image copy = new Image(p);

            constrain_image(copy);
            if (p.C == 3)
            {
                rgbgr_image(copy);
            }

            string buff = name;

            using (Mat disp = copy.ToMat())
            {
                ImageViewer.Show(disp, buff);

                Size size = new Size(disp.Width, disp.Height);

                if (outputVideo == null)
                {
                    Console.WriteLine($"\n SRC output_video = {outputVideo} ");
                    string outputName = "test_dnn_out.avi";
                    outputVideo = new VideoWriter(outputName, 25, size, true);
                    Console.WriteLine($"\n cvCreateVideoWriter, DST output_video = {outputVideo} ");
                }

                outputVideo.Write(disp);
            }

            Console.WriteLine("\n cvWriteFrame \n");
        }
Esempio n. 13
0
 protected void CreateVW(int w, int h)
 {
     if (vw == null && saveMp4)
     {
         vw = new VideoWriter($"{folderName}\\test.mp4", VideoWriter.Fourcc('P', 'I', 'M', '1'), 10, new System.Drawing.Size(w, h), true);
     }
 }
Esempio n. 14
0
 private void ProcessVideo(VideoWriter vw, Mat frame)
 {
     if (videoInProgress)
     {
         vw.Write(frame);
     }
 }
Esempio n. 15
0
        // *** Start and Stop Button ---------------------------------------------------------------
        private void btnStart_Click(object sender, EventArgs e)
        ///<summary>
        /// start button for start playing and detecting.
        /// if any kind of issue is occurred, then start the video playing and detecting
        ///
        /// if start button is clicked, timer starts running and the playing and detecting progress starts running
        ///
        ///</summary>
        {
            if (cap != null && strCapFeed != "")
            {
                if (bSave)
                {
                    saver = new VideoWriter(strSavePath, FourCC.DIVX, (double)uFps, new OpenCvSharp.Size((double)uFrameWidth, (double)uFrameHeight));
                }
                btnStart.Enabled = false;
                btnStop.Enabled  = true;

                timer.Interval = (int)(1000 / uFps);
                timer.Enabled  = true;
            }
            else
            {
                MessageBox.Show("There is no connected video feed!");
            }
        }
Esempio n. 16
0
        public static void CreateVideo(CrowdCountingRegression regression, int N, int M, int width, int height, IEnumerable <string> frames, List <IList <PointF> > outputs)
        {
            MathN::Matrix <double> shouldBe = PeoplePositions.GridQuantize(outputs, N, M, width, height);

            using (VideoWriter numberVideoWriter = new VideoWriter("D:\\video_predictions.avi", fps: 1, width: width, height: height, isColor: true))
                using (VideoWriter differenceVideoWriter = new VideoWriter("D:\\video_differences.avi", fps: 1, width: width, height: height, isColor: true))
                {
                    int cellHeight = height / N;
                    int cellWidth  = width / M;

                    MathN::Matrix <double> prediction = regression.Predict(new List <string>(frames));
                    int frameID = 0;
                    foreach (string framePath in frames)
                    {
                        using (Image <Bgr, Byte> countFrame = new Image <Bgr, Byte>(framePath))
                            using (Image <Bgr, Byte> differenceFrame = new Image <Bgr, Byte>(framePath))
                            {
                                for (int i = 1; i < N; ++i)
                                {
                                    LineSegment2D line = new LineSegment2D(
                                        new Point(0, i * cellHeight),
                                        new Point(width, i * cellHeight));
                                    countFrame.Draw(line, new Bgr(Color.Yellow), 2);
                                    differenceFrame.Draw(line, new Bgr(Color.Red), 2);
                                }

                                for (int j = 1; j < M; ++j)
                                {
                                    LineSegment2D line = new LineSegment2D(
                                        new Point(j * cellWidth, 0),
                                        new Point(j * cellWidth, height));
                                    countFrame.Draw(line, new Bgr(Color.Yellow), 2);
                                    differenceFrame.Draw(line, new Bgr(Color.Red), 2);
                                }


                                for (int i = 0; i < N; ++i)
                                {
                                    for (int j = 0; j < M; ++j)
                                    {
                                        double    cellPrediction = prediction[frameID, i *M + j];
                                        int       cellShoudlBe   = (int)Math.Round(shouldBe[frameID, i * M + j]);
                                        Rectangle rect           = new Rectangle(j * cellWidth, i * cellHeight, cellWidth, cellHeight);

                                        drawText(countFrame, rect, Brushes.Yellow, String.Format("{0:0.0}", cellPrediction));

                                        double difference       = (cellPrediction - cellShoudlBe);
                                        string differenceString = difference > 0 ? "+" + String.Format("{0:0.0}", difference) :  String.Format("{0:0.0}", difference);
                                        drawText(differenceFrame, rect, Brushes.Red, differenceString);
                                    }
                                }

                                numberVideoWriter.WriteFrame(countFrame);
                                differenceVideoWriter.WriteFrame(differenceFrame);
                            }

                        frameID++;
                    }
                }
        }
Esempio n. 17
0
        private void Recordbutton_Click(object sender, EventArgs e)
        {
            if (Recordbutton.Text == "¼ÖÆ")
            {
                if (MessageBox.Show("¿ªÊ¼Â¼ÖÆÂð£¿", "Information", MessageBoxButtons.OKCancel, MessageBoxIcon.Information) == DialogResult.OK)
                {
                    flag = true;
                    //vw = new VideoWriter("E:\\1.avi", -1, 25,(int)CvInvoke.cvGetCaptureProperty(capture, Emgu.CV.CvEnum.CAP_PROP.CV_CAP_PROP_FRAME_WIDTH), (int)CvInvoke.cvGetCaptureProperty(capture, Emgu.CV.CvEnum.CAP_PROP.CV_CAP_PROP_FRAME_HEIGHT), true);

                    char [] codec = { 'D', 'I', 'V', 'X' };

                    vw = new VideoWriter("2.avi", VideoWriter.Fourcc(codec[0], codec[1], codec[2], codec[3]),
                                         25,
                                         new Size(_capture0.Width, _capture0.Height),
                                         true);
                    Application.Idle += new EventHandler(ProcessFrame);
                    Recordbutton.Text = "ÔÝÍ£";
                }
            }
            else
            {
                if (MessageBox.Show("ֹͣ¼ÖÆÂð£¿", "Information", MessageBoxButtons.OKCancel, MessageBoxIcon.Information) == DialogResult.OK)
                {
                    flag = false;
                    vw.Dispose();
                    Application.Idle -= new EventHandler(ProcessFrame);
                    Recordbutton.Text = "¼ÖÆ";
                }
            }
        }
Esempio n. 18
0
        static void Main()
        {
            Directory.SetCurrentDirectory(AppDomain.CurrentDomain.BaseDirectory);
            Environment.SetEnvironmentVariable("PATH", Environment.GetEnvironmentVariable("PATH") + ";runtimes/win10-x64/"); //only needed if projects are directly referenced

            //var reader = new CameraCapture(0); //capture from camera
            var reader = new FileCapture(Path.Combine(getResourceDir(), "Welcome.mp4"));

            reader.Open();

            var writer = new VideoWriter(@"output.avi", reader.FrameSize, /*reader.FrameRate does not work Cameras*/ 30); //TODO: bug: FPS does not work for cameras

            writer.Open();

            Bgr <byte>[,] frame = null;
            do
            {
                reader.ReadTo(ref frame);
                if (frame == null)
                {
                    break;
                }

                using (var uFrame = frame.Lock())
                { writer.Write(uFrame); }

                frame.Show(autoSize: true);
            }while (!(Console.KeyAvailable && Console.ReadKey(true).Key == ConsoleKey.Escape));

            reader.Dispose();
            writer.Dispose();

            ImageUI.CloseAll();
        }
Esempio n. 19
0
        private static String GetVideoIOInfo()
        {
            String outText = String.Empty;
            int    width   = 640;
            int    height  = 480;

            using (VideoWriter writer = new VideoWriter("out.avi", VideoWriter.Fourcc('M', 'J', 'P', 'G'), 5, new Size(width, height), true))
            {
                for (int i = 0; i < 10; i++)
                {
                    using (Mat m = new Mat(width, height, DepthType.Cv8U, 3))
                    {
                        writer.Write(m);
                    }
                }
                outText += "Video written to out.avi" + Environment.NewLine;
            }
            using (VideoCapture capture = new VideoCapture("out.avi"))
            {
                Mat img2  = capture.QueryFrame();
                int count = 0;
                while (img2 != null && !img2.IsEmpty)
                {
                    img2.Dispose();
                    img2 = capture.QueryFrame();
                    count++;
                }
                outText += "Video read from out.avi" + Environment.NewLine;
            }

            return(outText);
        }
Esempio n. 20
0
        /// <summary>
        /// Save a stream of image frames as an AVI video file.
        /// </summary>
        /// <param name="frames">Ordered list of frames at 30 fps.</param>
        /// <param name="width">Frame width.</param>
        /// <param name="height">Frame height.</param>
        /// <param name="file">Output filename.</param>
        public static void SaveAsAvi(List <Color[]> frames, int width, int height, string file)
        {
            if (frames.Count == 0)
            {
                return;
            }

            using (VideoWriter writer = new VideoWriter(file, new Size(width, height),
                                                        30, true, VideoCodec.FromName("MJPG"))) {
                writer.Open();

                foreach (Color[] frame in frames)
                {
                    Bgr <byte>[,] bitmap = new Bgr <byte> [height, width];

                    int h = 0;
                    for (int k = 0; k < height; k++)
                    {
                        for (int i = 0; i < width; i++)
                        {
                            bitmap[k, i] = new Bgr <byte>(frame[h].B, frame[h].G, frame[h].R);
                            h++;
                        }
                    }

                    writer.Write(bitmap.Lock());
                }

                writer.Close();
            }
        }
        private void StartRecording(string savePath)
        {
            if (isRecording || isPlaying)
            {
                return;
            }

            this.savePath = savePath;

            writer = new VideoWriter();
            writer.open(savePath, VideoWriter.fourcc('M', 'J', 'P', 'G'), 30, new Size(Screen.width, Screen.height));

            if (!writer.isOpened())
            {
                Debug.LogError("writer.isOpened() false");
                writer.release();
                return;
            }

            screenCapture        = new Texture2D(Screen.width, Screen.height, TextureFormat.RGB24, false);
            recordingFrameRgbMat = new Mat(Screen.height, Screen.width, CvType.CV_8UC3);
            frameCount           = 0;

            isRecording = true;
        }
Esempio n. 22
0
        private void Record(int num)
        {
            if (num == 0)
            {
                nameVideo = String.Format("{0}{1}{2}", directorioK1V, DateTime.Now.ToString("MMddyyyyHmmss"), ".avi");

                using (VideoWriter vi = new VideoWriter(nameVideo, 0, 30, 640, 480, true))
                {
                    for (int i = 0; i < videoColor1.Count(); i++)
                    {
                        vi.WriteFrame <Bgr, Byte>(videoColor1[i]);
                    }
                    vi.Dispose();
                }

                nameVideo = string.Empty;
                videoColor1.Clear();
            }
            else
            {
                nameVideo = String.Format("{0}{1}{2}", directorioK2V, DateTime.Now.ToString("MMddyyyyHmmss"), ".avi");

                using (VideoWriter vi = new VideoWriter(nameVideo, 0, 30, 640, 480, true))
                {
                    for (int i = 0; i < videoColor2.Count(); i++)
                    {
                        vi.WriteFrame <Bgr, Byte>(videoColor2[i]);
                    }
                    vi.Dispose();
                }

                nameVideo = string.Empty;
                videoColor2.Clear();
            }
        } //fin Record()
Esempio n. 23
0
 public MainForm()
 {
     InitializeComponent();
     pre_frame   = null;
     videoWriter = null;
     fps         = 30;
 }
Esempio n. 24
0
        private void btn_addFrameNo_Click(object sender, EventArgs e)
        {
            SaveFileDialog saveOp;



            if (rendering)
            {
                MessageBox.Show("render finished");
                btn_startRender.Text = "start render";
            }
            else
            {
                MessageBox.Show("please select save path");

                saveOp            = new SaveFileDialog();
                saveOp.DefaultExt = "avi";
                saveOp.ShowDialog();

                vw = new VideoWriter(saveOp.FileName, 25, new Size((int)cap.GetCaptureProperty(CapProp.FrameWidth), (int)cap.GetCaptureProperty(CapProp.FrameHeight)), true);

                btn_startRender.Text = "stop render";
            }
            rendering = !rendering;
        }
Esempio n. 25
0
        /// <summary>
        /// 获取图像
        /// </summary>
        public void Cap_Run(object o)
        {
            VideoCapture cap       = new VideoCapture(Path);
            VideoWriter  output    = new VideoWriter();
            int          videoW    = (int)cap.Get(CaptureProperty.FrameHeight);
            int          videoH    = (int)cap.Get(CaptureProperty.FrameHeight);
            int          fps       = (int)cap.Get(CaptureProperty.Fps);
            Size         videosize = new Size(videoW, videoH);

            output.Open("demo.avi", FourCC.MJPG, fps, videosize);

            while (true)
            {
                cap.Read(Source);
                output.Write(Source);
                //Source.ImWrite("D:\\Show me your Code\\GitHub仓库\\My-ROV-Project\\temp.jpg");
                if (Isopen == 0)
                {
                    break;
                }
                try
                {
                    (this.Owner as MainForm).PicBox_Video.Image = BitmapConverter.ToBitmap(Source);
                }
                catch (Exception e)
                {
                    MessageBox.Show(e.Message);
                }
            }
            if (Isopen == 0)
            {
                this.th.Abort();
            }
        }
Esempio n. 26
0
        public void Process(string outputFilePath, double reductionCoefficient, FrameAction frameAction)
        {
            // TODO: Multithreaded option

            var resultingSize = new Size((int)(FrameSize.Width * reductionCoefficient), (int)(FrameSize.Height * reductionCoefficient));

            var frameNumber   = 0;
            var tempFramePath = Path.Combine(Path.GetTempPath(), "tempframe.png");

            using (var videoWriter = new VideoWriter(outputFilePath, -1, (int)Fps, resultingSize, true))
            {
                var continueWorking = true;
                while (continueWorking)
                {
                    frameNumber++;

                    var frame = new Mat();
                    VideoSource.Read(frame);

                    if (frame.IsEmpty)
                    {
                        break;
                    }

                    var scaledFrame = ApplyLiquidRescale(frame, resultingSize, tempFramePath);
                    frame.Dispose();

                    continueWorking = frameAction(scaledFrame.Bitmap, frameNumber);

                    videoWriter.Write(scaledFrame);
                    scaledFrame.Dispose();
                }
            }
        }
Esempio n. 27
0
        public void Combine(int origin1_start, int origin1_count)
        {
            if (mode != 2)
            {
                return;
            }
            cap1.SetCaptureProperty(CapProp.PosFrames, origin1_start);

            Mat mat = new Mat();

            writer = new VideoWriter(filename_dest, -1, (int)fps1, new Size(cap1.Width, cap1.Height), true);
            //第一个文件
            if (!writer.IsOpened)
            {
                return;
            }

            for (int i = 0; i < origin1_count; i++)
            {
                mat = cap1.QueryFrame();
                if (mat.IsEmpty)
                {
                    break;
                }
                writer.Write(mat);

                mat.Dispose();
            }


            writer.Dispose();
        }
Esempio n. 28
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="path"></param>
        /// <param name="angle"></param>
        /// <param name="outpath"></param>
        /// <param name="mode360"></param>
        public static void saveFisheyeMovie2equirectangular(string path, int angle, string outpath, bool mode360)
        {
            var video = new VideoCapture(path);
            var size  = new Size();
            var len   = video.FrameHeight > video.FrameWidth ? video.FrameHeight : video.FrameWidth;

            size.Height = len;
            size.Width  = mode360 ? len * 2 : len;
            var writer = new VideoWriter(outpath, FourCC.H264, video.Fps, size);
            var matrix = findCorrespondingFisheyePointMatrix(len, angle);

            while (video.IsOpened())
            {
                var frame = new Mat();
                if (video.Read(frame))
                {
                    //var f = fisheye2equirectangular(frame, angle, mode360);
                    var f = fisheye2equirectangular(frame, len, mode360, matrix);
                    // 変換して書き込み
                    writer.Write(frame);
                }
                else
                {
                    break;
                }
                frame.Dispose();
            }
            video.Dispose();
            writer.Dispose();
        }
Esempio n. 29
0
        public static void WriteVideo(string path)
        {
            var viewer = new ImageViewer();

            int counter = 0;

            const int fps = 24;

            Task.Run(() =>
            {
                using (var capture = new Capture())
                {
                    var frameWidth  = (int)capture.GetCaptureProperty(Emgu.CV.CvEnum.CapProp.FrameWidth);
                    var frameHeight = (int)capture.GetCaptureProperty(Emgu.CV.CvEnum.CapProp.FrameHeight);

                    using (var writer = new VideoWriter(path, -1, fps, new Size(frameWidth, frameHeight), true))
                    {
                        while (true)
                        {
                            var frame    = capture.QueryFrame();
                            viewer.Image = frame;
                            writer.Write(frame);

                            counter++;
                        }
                    }
                }
            });

            viewer.ShowDialog();
        }
Esempio n. 30
0
        public void TrackRedVedio(String videoFile, String outputFile, String targetFile)
        {
            VideoCapture capture = new VideoCapture(videoFile);
            Mat          image   = new Mat();

            OpenCvSharp.CPlusPlus.Size dsize = new OpenCvSharp.CPlusPlus.Size(capture.FrameWidth, capture.FrameHeight);
            VideoWriter   writer             = new VideoWriter(outputFile, FourCC.MJPG, fps, dsize, true);
            int           k          = 0;
            List <string> targetList = new List <string>();

            while (capture.Read(image))
            {
                if (k % 1 == 0)
                {
                    double[] target;
                    Mat      res = TrackR(image, out target);
                    writer.Write(res);
                    targetList.Add(k + " " + target[0] + " " + target[1]);
                }

                k++;
                // if (k == 100)
                //   break;
            }
            ;
            writer.Release();
            Console.WriteLine(k);
            IOTools.WriteListToTxt(targetList, targetFile);
        }
        public void VideoWriterTest_CreateTestMP4File_640x480_24fps_15s()
        {

            VideoWriter videoWriter = new VideoWriter();

            string TestOutputDirectoryQualified = Directory.GetCurrentDirectory() + "\\" + TestOutputFilesPath;
            if (!Directory.Exists(TestOutputDirectoryQualified))
            {
                Directory.CreateDirectory(TestOutputDirectoryQualified);
            }

            videoWriter.Init(TestOutputDirectoryQualified + "\\" + MP4_FILENAME, VIDEO_WIDTH, VIDEO_HEIGHT, (int)VIDEO_FPS, 1, (int)VIDEO_ENCODE_BITRATE);

            var filepaths = Directory.EnumerateFiles(Directory.GetCurrentDirectory() + "\\" + DataFilesPath, "*.jpg", SearchOption.TopDirectoryOnly);
            DateTime dateTimeNow = DateTime.Now;
            long startTimeTicks = dateTimeNow.Ticks;

            do
            {
                foreach (string filepath in filepaths)
                {
                    byte[] imagebitArray = GetImageByteArray(filepath);

                    MemoryStream stream = new MemoryStream(imagebitArray);

                    Bitmap image = (Bitmap)Image.FromStream(stream);

                    //lets check if the image is what we expect
                    if (image.PixelFormat != PixelFormat.Format24bppRgb)
                    {
                        string message = String.Format("Image format from is not correct. PixelFormat: {1}", image.PixelFormat);
                        throw new Exception(message);
                    }

                    // Lock the bitmap's bits.  
                    Rectangle rect = new Rectangle(0, 0, image.Width, image.Height);
                    BitmapData bmpData = image.LockBits(rect, ImageLockMode.ReadOnly, image.PixelFormat);

                    // Get the address of the first line.
                    IntPtr ptr = bmpData.Scan0;

                    unsafe
                    {
                        videoWriter.AddFrame((byte *)ptr, 3*VIDEO_WIDTH*VIDEO_HEIGHT, VIDEO_WIDTH, VIDEO_HEIGHT, DateTime.Now.Ticks - startTimeTicks);
                    }
                    Thread.Sleep(new TimeSpan(0, 0, 0, 0, (int)(1000.0 / VIDEO_FPS)));

                    image.UnlockBits(bmpData);
                }

            } while (TimeSpan.Compare(new TimeSpan(DateTime.Now.Ticks - startTimeTicks), new TimeSpan(0, 0, (int)((double)VIDEO_DURATION_IN_100_NS/10000000.0))) < 0);
            
            videoWriter.Done();

            ValidateMP4OutputFile(TestOutputDirectoryQualified + "\\" + MP4_FILENAME);

        }
Esempio n. 32
0
        public void Run()
        {
            const string OutVideoFile = "out.avi";

            // Opens MP4 file (ffmpeg is probably needed)
            VideoCapture capture = new VideoCapture(FilePath.Bach);

            // Read movie frames and write them to VideoWriter 
            Size dsize = new Size(640, 480);
            using (VideoWriter writer = new VideoWriter(OutVideoFile, -1, capture.Fps, dsize))
            {
                Console.WriteLine("Converting each movie frames...");
                Mat frame = new Mat();
                while(true)
                {
                    // Read image
                    capture.Read(frame);
                    if(frame.Empty())
                        break;

                    Console.CursorLeft = 0;
                    Console.Write("{0} / {1}", capture.PosFrames, capture.FrameCount);

                    // grayscale -> canny -> resize
                    Mat gray = new Mat();
                    Mat canny = new Mat();
                    Mat dst = new Mat();
                    Cv2.CvtColor(frame, gray, ColorConversion.BgrToGray);
                    Cv2.Canny(gray, canny, 100, 180);
                    Cv2.Resize(canny, dst, dsize, 0, 0, Interpolation.Linear);
                    // Write mat to VideoWriter
                    writer.Write(dst);
                } 
                Console.WriteLine();
            }

            // Watch result movie
            using (VideoCapture capture2 = new VideoCapture(OutVideoFile))
            using (Window window = new Window("result"))
            {
                int sleepTime = (int)(1000 / capture.Fps);

                Mat frame = new Mat();
                while (true)
                {
                    capture2.Read(frame);
                    if(frame.Empty())
                        break;

                    window.ShowImage(frame);
                    Cv2.WaitKey(sleepTime);
                }
            }
        }
Esempio n. 33
0
 private void Button_Stop_save_Click(object sender, RoutedEventArgs e)
 {
     if (vw != null)
     {
         vw.Dispose();
         vw = new VideoWriter();
     }
 }
Esempio n. 34
0
        private void StopRecordingHelper(VideoWriter VideoWriter, string cameraName)
        {
            DateTime startTime = DateTime.Now;
            int hresult = VideoWriter.Done();
            logger.Log("Stopping took {0} ms", (DateTime.Now - startTime).TotalMilliseconds.ToString());

            if (hresult != 0)
            {
                string message = String.Format("Failed to stop recording for {0} at {1}. Error code = {2:x}",
                                                cameraName, DateTime.Now, (uint)hresult);
                logger.Log(message);

            }

            logger.Log("stopped recording for {0}", cameraName);
        }
Esempio n. 35
0
        public void Button_Save_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                CvSize sz;
                string strRECName;

                if (savefilename == "name")
                {
                    strRECName = savefolder + @"\" + "video" + "noname" + ".avi";
                }
                else
                {
                    strRECName = savefolder + @"\" + savefilename + ".avi";
                }
                if (size.SelectedItem.ToString() == "320,240")
                {
                    sz = new CvSize(320, 240);
                }
                else if (size.SelectedItem.ToString() == "512,424")
                {
                    sz = new CvSize(512, 424);
                }
                else return;

                vw = new VideoWriter();
                vw.Open(strRECName, -1, 30, sz, true);

                var panel = this.resourcePanels[this.ListBox_ResourcePanels.SelectedIndex];
                this.starttime = DateTime.Now;
                this.currentframe = 0;
                this.IsRecStarted = true;
                this.saveImageIndex = (int)this.SliderTextBox.Slider_Main.Value;
                panel.ImageFrameArrived += Panel_ImageFrameArrived;

            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
            }
        }