InputFrm

download InputFrm

of 3

Transcript of InputFrm

using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;using AForge.Video.VFW;using AForge.Video.DirectShow;using AForge.Video;using AForge.Imaging.Filters;using AForge;using AForge.Imaging;namespace AATS{ public partial class InputFrm : Form { AVIReader reader; public InputFrm() { InitializeComponent(); } private void InputFrm_Load(object sender, EventArgs e) { // instantiate AVI reader reader = new AVIReader(); // open video file //reader.Open(@"C:\Users\TheAnh\Videos\Any Video Converter Ultimate\AVI\IMG_0454_Segment_0_xvid.avi"); //// read the video file //while (reader.Position - reader.Start < reader.Length) //{ // // get next frame // Bitmap image = reader.GetNextFrame(); // // .. process the frame somehow or display it // pic.Image = image; //} //reader.Close(); } FileVideoSource fvs; private void openVideoFileToolStripMenuItem_Click(object sender, EventArgs e) { OpenFileDialog dlg = new OpenFileDialog(); dlg.Filter = "*.avi|*.avi"; if (dlg.ShowDialog() == DialogResult.OK) { if (fvs != null && fvs.IsRunning) fvs.Stop(); fvs = new FileVideoSource(dlg.FileName); //fvs.PreventFreezing = true; fvs.NewFrame += new AForge.Video.NewFrameEventHandler(fvs_NewFrame); fvs.Start(); } } //int count=0; Grayscale grayscale = new Grayscale(0.2125, 0.7154, 0.0721); OtsuThreshold outsu = new OtsuThreshold(); SISThreshold sis = new SISThreshold(); OtsuThreshold otsu = new OtsuThreshold(); RotateBilinear rotate = new RotateBilinear(-180, true); Bitmap bm, original; Crop crp = new Crop(new Rectangle(335, 60, 656, 606)); void fvs_NewFrame(object sender, NewFrameEventArgs eventArgs) { //if ((++count) % 5 != 0) { //Bitmap original = (Bitmap)eventArgs.Frame.Clone(); original = (Bitmap)eventArgs.Frame.Clone(); Bitmap bitmap = crp.Apply(eventArgs.Frame); bitmap = rotate.Apply(bitmap); bm = (Bitmap)bitmap.Clone(); // apply the filter //ColorFilter.ApplyInPlace(bm); bm = grayscale.Apply(bm); //bm = otsu.Apply(bm); bm = sis.Apply(bm); if (target != null) pic_MouseClick(null, new MouseEventArgs(MouseButtons.Left, 1, target.X + target.Width / 2, target.Y + target.Height / 2,0)); if (target != null)//Ve tau muc tieu { Graphics g = Graphics.FromImage(bitmap); g.DrawRectangle(new Pen(Color.Red,2), target); g.Save(); } pic.Image = bitmap; } } ColorFiltering ColorFilter = new ColorFiltering(); private void RedNmr_ValueChanged(object sender, EventArgs e) { // set color ranges to keep ColorFilter.Red = new IntRange((int)MinRed.Value, (int)MaxRed.Value); ColorFilter.Green = new IntRange((int)MinGreen.Value, (int)MaxGreen.Value); ColorFilter.Blue = new IntRange((int)MinBlue.Value, (int)MaxBlue.Value); } private void InputFrm_FormClosing(object sender, FormClosingEventArgs e) { fvs.Stop(); } private void pic_MouseMove(object sender, MouseEventArgs e) { Text = string.Format("({0},{1})", e.X, e.Y); } public Bitmap CropImage(Bitmap source, Rectangle section) { Bitmap bmp = new Bitmap(section.Width, section.Height); Graphics g = Graphics.FromImage(bmp); g.DrawImage(source, 0, 0, section, GraphicsUnit.Pixel); return bmp; } Rectangle target; private void pic_MouseClick(object sender, MouseEventArgs e) { try { Crop crop = new Crop(new Rectangle(e.X - 30, e.Y - 30, 60, 60)); Bitmap bitmap = crop.Apply((Bitmap)bm.Clone()); //Bitmap bitmap = crop.Apply((Bitmap)original.Clone()); //bitmap = grayscale.Apply(bitmap); //bitmap = sis.Apply(bitmap); pic1.Image =(Bitmap) bitmap.Clone(); BlobCounter bc = new BlobCounter(); bc.ProcessImage(bitmap); Rectangle[] rects = bc.GetObjectsRectangles(); pic2.Image = null; foreach (Rectangle rect in rects) { if (rect.Contains(new System.Drawing.Point(30, 30))) { pic2.Image = CropImage(bitmap, rect); //target = new Rectangle(e.X - rect.Width / 2, e.Y - rect.Height / 2, rect.Width, rect.Height); target = new Rectangle(e.X-30 + rect.X, e.Y-30 + rect.Y, rect.Width, rect.Height); break; } } } catch (Exception ex) { MessageBox.Show(ex.Message); } } }}public class Target{ Blob blob; public Color color; public Target() { }}