private void Init(string FileName) { InitBrushPen(); AVIReader aw = new AVIReader(); aw.Open(FileName); Settings.framerate = (int)aw.FrameRate; Bitmap fr = aw.GetNextFrame(); InitFrameSize(fr.Width, fr.Height); InitLists(); InitVariables(); int awLen = aw.Length; double framedur = ((double)(60 / Settings.framerate)) / 60; bitmaps.Add(fr); FrameDurations.Add(framedur); AddFrameToGallery(0, LocY); LocY += 95; for (int i = 1; i < awLen; i++) { fr = aw.GetNextFrame(); bitmaps.Add(fr); FrameDurations.Add(framedur); AddFrameToGallery(bitmaps.Count - 1, LocY); LocY += 95; } SetBrush(); SetBackColor(Color.White); SelectPB(0); RefreshGI(); InitBrushSizeBar(); InitScaleBar(); }
private Bitmap getFrame(int position) { int tmp = reader.Position; reader.Position = position; Bitmap frame = reader.GetNextFrame(); this.reader.Position = tmp; return(frame); }
private void getImage_Click(object sender, EventArgs e) { string inputText = this.textBox1.Text; if (inputText == "") { inputText = "0"; } savedVideo = new AVIReader(); if (videoFilePath != null) { savedVideo.Open(videoFilePath); if (Int32.Parse(inputText) * savedVideo.FrameRate <= (savedVideo.Length)) { savedVideo.Position = Int32.Parse(inputText) * (int)savedVideo.FrameRate; Bitmap frame = savedVideo.GetNextFrame(); //Form picture = new Snapshot(frame); //picture.Show(this); frame.Save("snapshot.jpg"); label2.Text = "Image Captured!"; } else { label2.Text = "Video is not long enough!!!"; } } else { label3.Text = "Select an .avi File first!"; } }
private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) { if (videoFilePath != null) { sampleVid = new AVIReader(); sampleVid.Open(videoFilePath); linkLabel1.Enabled = false; for (int k = 0; k < sampleVid.Length; k++) { sampleImg = sampleVid.GetNextFrame(); for (int i = 0; i < sampleImg.Width; i++) { for (int j = 0; j < sampleImg.Height; j++) { Color pixel = sampleImg.GetPixel(i, j); if (pixel.R >= 130) { this.dataGridView1.Rows.Insert((this.dataGridView1.Rows.Count) - 1, i.ToString(), j.ToString()); coordInfo += "(" + i.ToString() + " , " + j.ToString() + ") \n\r "; break; } } } } System.IO.File.WriteAllText("RedDotCoordinateInfo.txt", coordInfo); } else { label2.Text = "Select a .avi file first!"; } }
private void WorkerThread(CancellationToken token) { Task.Factory.StartNew(() => { this.Running = true; AVIReader aviReader = new AVIReader(); try { aviReader.Open(VideoSource); // open file while (!cts.IsCancellationRequested) { Bitmap bmp = aviReader.GetNextFrame(); // get next frame FramesReceived++; if (NewFrame != null) { NewFrame(this, new CameraEventArgs(bmp)); } bmp.Dispose(); // free image } } catch (Exception ex) { Logger.Error(ex); } aviReader.Dispose(); aviReader = null; this.Running = false; }, token); }
// Thread entry point public void WorkerThread() { try { while (true) { // start time DateTime start = DateTime.Now; // get next frame if ((aviReader.CurrentPosition + _videoSpeed - 1) < aviReader.Length) { aviReader.CurrentPosition += (_videoSpeed - 1); } else { aviReader.CurrentPosition = aviReader.Length - 1; } Bitmap bmp = aviReader.GetNextFrame(); framesReceived++; // need to stop ? if (stopEvent.WaitOne(0, false)) { break; } if (NewFrame != null) { NewFrame(this, new CameraEventArgs(bmp)); } // free image bmp.Dispose(); // end time TimeSpan span = DateTime.Now.Subtract(start); // fps control int m = (int)span.TotalMilliseconds; if (_isLimitFps && _fpsLimit != 0) { float fps = _fpsLimit; if (fps < 0) { fps = _embededFps; } int sleepTime = (int)(1000 / fps); if (m < sleepTime) { Thread.Sleep(sleepTime - m); } } } } catch (Exception ex) { System.Diagnostics.Debug.WriteLine("exception : " + ex.Message); } }
// Thread entry point public void WorkerThread() { AVIReader aviReader = new AVIReader(); try { // open file aviReader.Open(source); while (true) { // start time DateTime start = DateTime.Now; // get next frame Bitmap bmp = aviReader.GetNextFrame(); framesReceived++; // need to stop ? if (stopEvent.WaitOne(0, false)) { break; } if (NewFrame != null) { NewFrame(this, new CameraEventArgs(bmp)); } // free image bmp.Dispose(); // end time TimeSpan span = DateTime.Now.Subtract(start); // sleep for a while /* int m = (int) span.TotalMilliseconds; * * if (m < 100) * Thread.Sleep(100 - m);*/ } } catch (Exception ex) { Tools.WriteToFile(Tools.errorFile, "WorkerThread error: " + ex.Message); System.Diagnostics.Debug.WriteLine("exception : " + ex.Message); } aviReader.Dispose(); aviReader = null; }
/// <summary> /// Worker thread. /// </summary> /// public void WorkerThread() { // AVI reader try { // open file aviReader.Open(source); // stop positions int stopPosition = aviReader.Start + aviReader.Length; while (true) { // start time DateTime start = DateTime.Now; // get next frame Bitmap bitmap = aviReader.GetNextFrame(); framesReceived++; // need to stop ? if (stopEvent.WaitOne(0, false)) { break; } if (NewFrame != null) { NewFrame(this, new NewFrameEventArgs(bitmap)); } // free image bitmap.Dispose(); // check current position if (aviReader.Position >= stopPosition) { break; } while (this.Pause && (stopEvent.WaitOne(0, true) == false)) { Thread.Sleep(1000); start.AddSeconds(1.0); } // frame interval int interval = (frameIntervalFromSource) ? (int)(1000 / aviReader.FrameRate) : frameInterval; if (this.Speed > 1) { interval = (interval * 1000 / this.Speed) / 1000; } if (this.Speed < -1) { interval = interval * (0 - this.Speed); } // wait for a while ? if (interval > 0) { // get frame extract duration TimeSpan span = DateTime.Now.Subtract(start); // miliseconds to sleep int msec = interval - (int)span.TotalMilliseconds; while ((msec > 0) && (stopEvent.WaitOne(0, true) == false)) { // sleeping ... Thread.Sleep((msec < 100) ? msec : 100); msec -= 100; } } } } catch (Exception exception) { // provide information to clients if (VideoSourceError != null) { VideoSourceError(this, new VideoSourceErrorEventArgs(exception.Message)); } } aviReader.Close(); //aviReader.Dispose(); //aviReader = null; }
public void InsertToFrame(byte[] insertedByte) { Bitmap bitmap = reader.GetNextFrame(); Dimension = bitmap.Height * bitmap.Width; ResetRandIndex(); int pos = RandIndex(); for (int i = 0; i < (insertedByte.Length); i++) { for (int j = 0; j < 3; j++) { int y = pos / bitmap.Size.Width; int x = pos % bitmap.Size.Width; byte r = bitmap.GetPixel(x, y).R; byte g = bitmap.GetPixel(x, y).G; byte b = bitmap.GetPixel(x, y).B; if (LSB == 1) { int byteAtPos = (insertedByte[i] / (1 << (j * 3))) % 2; r = (byte)ToByte(r, byteAtPos, 1); byteAtPos = (insertedByte[i] / (1 << (j * 3 + 1))) % 2; g = (byte)ToByte(g, byteAtPos, 1); if (j < 2) { byteAtPos = (insertedByte[i] / (1 << (j * 3 + 2))) % 2; b = (byte)ToByte(b, byteAtPos, 1); } } else if (LSB == 2) { int byteAtPos; if (j < 2) { byteAtPos = ((insertedByte[i] / (1 << (j * 6 + 1))) % 2) * 2 + ((insertedByte[i] / (1 << (j * 6))) % 2); r = (byte)ToByte(r, byteAtPos, 2); } if (j == 0) { byteAtPos = ((insertedByte[i] / (1 << (j * 6 + 3))) % 2) * 2 + ((insertedByte[i] / (1 << (j * 6 + 2))) % 2); g = (byte)ToByte(g, byteAtPos, 2); byteAtPos = ((insertedByte[i] / (1 << (j * 6 + 5))) % 2) * 2 + ((insertedByte[i] / (1 << (j * 6 + 4))) % 2); b = (byte)ToByte(b, byteAtPos, 2); } } SumPNSR += ((bitmap.GetPixel(x, y).R - r) * (bitmap.GetPixel(x, y).R - r)) + ((bitmap.GetPixel(x, y).G - g) * (bitmap.GetPixel(x, y).G - g)) + ((bitmap.GetPixel(x, y).B - b) * (bitmap.GetPixel(x, y).B - b)); SumPNSRFrame++; bitmap.SetPixel(x, y, Color.FromArgb(r, g, b)); pos = RandIndex(); } } PNSR = (double)SumPNSR / SumPNSRFrame; writer.AddFrame(bitmap); }