-
Notifications
You must be signed in to change notification settings - Fork 0
/
Form1.cs
83 lines (69 loc) · 2.3 KB
/
Form1.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
using AForge.Video;
using AForge.Video.DirectShow;
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 System.Windows.Threading;
namespace GlyphTest
{
public partial class Form1 : Form
{
Processor processor;
public Form1()
{
InitializeComponent();
processor = new Processor();
processor.PostAction += new PostProcess(onProcess);
initVideo();
}
private void initVideo()
{
// enumerate video devices
FilterInfoCollection videoDevices = new FilterInfoCollection(FilterCategory.VideoInputDevice);
// create video source
VideoCaptureDevice videoSource = new VideoCaptureDevice(videoDevices[0].MonikerString);
// set NewFrame event handler
videoSource.NewFrame += new NewFrameEventHandler(video_NewFrame);
// start the video source
videoSource.Start();
}
private void video_NewFrame(object sender, NewFrameEventArgs eventArgs)
{
// get new frame
Bitmap bitmap = eventArgs.Frame;
Bitmap imediateDraw = new Bitmap(bitmap, new Size(pictureBox2.Width, pictureBox2.Height));
pictureBox2.Invoke((Action)delegate()
{
if (pictureBox2.Image != null)
{
pictureBox2.Image.Dispose();
}
pictureBox2.Image = imediateDraw;
});
Bitmap clone = new Bitmap(bitmap.Width, bitmap.Height, System.Drawing.Imaging.PixelFormat.Format24bppRgb);
using (Graphics gr = Graphics.FromImage(clone))
{
gr.DrawImage(bitmap, new Point(0, 0));
}
processor.Image = clone;
bitmap.Dispose();
}
private void onProcess(Bitmap image)
{
pictureBox1.Invoke((Action)delegate()
{
if (pictureBox1.Image != null)
{
pictureBox1.Image.Dispose();
}
pictureBox1.Image = (Bitmap) image.Clone();
});
}
}
}