114 lines
3.7 KiB
C#
114 lines
3.7 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.ComponentModel;
|
|
using System.Data;
|
|
using System.Drawing;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using System.Windows.Forms;
|
|
using AForge.Video;
|
|
using AForge.Video.DirectShow;
|
|
using AForge.Video.FFMPEG;
|
|
using AForge.Video.Kinect;
|
|
using AForge.Video.VFW;
|
|
|
|
namespace Part_3___Movemet_Detection
|
|
{
|
|
public partial class MovementDetection : Form
|
|
{
|
|
string videoFilePath = null;
|
|
AVIReader sampleVid = null;
|
|
Bitmap sampleImg = null;
|
|
string coordInfo = null;
|
|
|
|
public MovementDetection()
|
|
{
|
|
InitializeComponent();
|
|
}
|
|
|
|
private void Form1_Load(object sender, EventArgs e)
|
|
{
|
|
linkLabel1.Enabled = false;
|
|
}
|
|
private void recordVideo()
|
|
{
|
|
AVIWriter writer = new AVIWriter("wmv3");
|
|
writer.Open("test.avi", 320, 240);
|
|
Bitmap image = new Bitmap(320, 240);
|
|
|
|
for (int i = 0; i < 240; i = i + 5)
|
|
{
|
|
if (i == 235)
|
|
break;
|
|
if (i > 4)
|
|
{
|
|
image.SetPixel(i - 1, i - 1, Color.Black);
|
|
image.SetPixel(i - 2, i - 2, Color.Black);
|
|
image.SetPixel(i - 3, i - 3, Color.Black);
|
|
image.SetPixel(i - 4, i - 4, Color.Black);
|
|
image.SetPixel(i - 5, i - 5, Color.Black);
|
|
}
|
|
|
|
image.SetPixel(i, i, Color.Red);
|
|
image.SetPixel(i + 1, i + 1, Color.Red);
|
|
image.SetPixel(i + 2, i + 2, Color.Red);
|
|
image.SetPixel(i + 3, i + 3, Color.Red);
|
|
image.SetPixel(i + 4, i + 4, Color.Red);
|
|
|
|
writer.AddFrame(image);
|
|
}
|
|
writer.Close();
|
|
|
|
}
|
|
|
|
private void SelectVideoFile_Click(object sender, EventArgs e)
|
|
{
|
|
openFileDialog1.Title = "Select an .avi Video File!";
|
|
openFileDialog1.FileName = "";
|
|
openFileDialog1.Filter = "*.avi|*.avi";
|
|
openFileDialog1.Multiselect = false;
|
|
openFileDialog1.ShowDialog();
|
|
if (openFileDialog1.FileName != "")
|
|
{
|
|
videoFilePath = openFileDialog1.FileName;
|
|
label2.Text = " A file is selected!";
|
|
linkLabel1.Enabled = true;
|
|
}
|
|
}
|
|
|
|
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!";
|
|
}
|
|
}
|
|
}
|