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(); }
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(); }
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; }
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(); }
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); } } }
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()); }
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); }
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; }
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"); }
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); } }
private void ProcessVideo(VideoWriter vw, Mat frame) { if (videoInProgress) { vw.Write(frame); } }
// *** 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!"); } }
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++; } } }
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 = "¼ÖÆ"; } } }
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(); }
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); }
/// <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; }
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()
public MainForm() { InitializeComponent(); pre_frame = null; videoWriter = null; fps = 30; }
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; }
/// <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(); } }
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(); } } }
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(); }
/// <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(); }
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(); }
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); }
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); } } }
private void Button_Stop_save_Click(object sender, RoutedEventArgs e) { if (vw != null) { vw.Dispose(); vw = new VideoWriter(); } }
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); }
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); } }