C# - AForge.NET을 이용한 웹캠 영상 출력
주간닷넷에 AForge.NET이 소개되었군요. ^^
주간닷넷 2016년 8월 2일 - AForge.NET
; https://blogs.msdn.microsoft.com/eva/?p=11715
AForge.NET Framework 2.2.5 is now available
; http://www.aforgenet.com/news/2013.07.17.releasing_framework_2.2.5.html
보니까, 재미있는 기능들이 많이 있습니다. 그중에서 오늘의 제목에 걸맞게 VideoCaptureDevice 타입의 간단한 사용법을 보겠습니다.
VideoCaptureDevice Class
; http://www.aforgenet.com/framework/docs/html/f4d3c2ba-605c-f066-f969-68260ce5e141.htm
This video source class captures video data from local video capture device, like USB web camera (or internal), frame grabber, capture board - anything which supports DirectShow interface. For devices which has a shutter button or support external software triggering, the class also allows to do snapshots. Both video size and snapshot size can be configured.
NuGet 덕분에 설치도 간단하고,
AForge.Video.DirectShow 2.2.5
; https://www.nuget.org/packages/AForge.Video.DirectShow/
PM> Install-Package AForge.Video.DirectShow
도움말이 잘 되어 있어 사용법도 간단합니다.
Access to USB cameras and video files using DirectShow
; http://www.aforgenet.com/framework/features/directshow_video.html
따라서, WinForm 용 예제 코드를 이렇게 쉽게 작성할 수 있습니다.
using System;
using System.Drawing;
using System.Windows.Forms;
using AForge.Video;
using AForge.Video.DirectShow;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
FilterInfoCollection _videoDevices;
private void Form1_Load(object sender, EventArgs e)
{
_videoDevices = new FilterInfoCollection(FilterCategory.VideoInputDevice);
if (_videoDevices.Count == 0)
{
button1.Enabled = false;
MessageBox.Show("NO video input device");
return;
}
}
private void video_NewFrame(object sender, NewFrameEventArgs eventArgs)
{
Bitmap bitmap = eventArgs.Frame;
this.Invoke((Action)(() =>
{
pictureBox1.Image = (Bitmap)bitmap.Clone();
}), null);
}
VideoCaptureDevice _videoSource;
private void button1_Click(object sender, EventArgs e)
{
if (button1.Text == "Start")
{
_videoSource = new VideoCaptureDevice(_videoDevices[0].MonikerString);
_videoSource.NewFrame += new NewFrameEventHandler(video_NewFrame);
_videoSource.Start();
button1.Text = "Stop";
}
else
{
_videoSource.SignalToStop();
button1.Text = "Start";
}
}
}
}
다음은, 카메라가 설치된 제 노트북에서 실행한 화면입니다.
(
첨부 파일은 이 글의 예제 코드를 포함합니다.)
AForge.NET에 아쉬운 점이 있다면, 2013년의 2.2.5 버전 이후로 업데이트가 중단된 듯하다는 것입니다. 일부 그 명맥을 GitHub에서 개인 자격으로 이어가고는 있으나... 글쎄요...
암튼, 적어도 윈도우 10 환경까지는 무난하게 사용할 수 있습니다.
[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]