티스토리 뷰
참고한 내용 :
Aforge 가 편하긴 편했다. 이것을 사용하면 한 방 훅이었다.
알려주신 SuperAction 블로그의 주인께 감사의 말을 전한다.
처음에는 Aforge가 무엇인가 했더니 라이브러리 였다.
http://www.aforgenet.com/ 으로 가보니 확실히 알 수 잇었다.
그곳은 .NET Framework 를 위한 개발을 수월할 수 있게 해주는
환경을 제공하는 곳 같았다.
다음은 AForge.NET 의 홈페이지 화면이다.
이 곳에서 [::AForge.NET Framework] 를 클릭 후 좌측에 [Downloads]를 클릭하면
다음과 같은 화면이 발생한다.
여기서 [Download Installer]를 선택하여 설치하면 된다.
설치했던 경로명은 따로 복사해두거나 쉬운 곳에 설치하여 경로명을 잊지 않도록 하자.
여기까지가 세팅과정이었다.
내가 만든 것은 Visual Studio 2010 을 이용하여 만든 것이다.
여기서 [Download Installer]를 선택하여 설치하면 된다.
설치했던 경로명은 따로 복사해두거나 쉬운 곳에 설치하여 경로명을 잊지 않도록 하자.
여기까지가 세팅과정이었다.
내가 만든 것은 Visual Studio 2010 을 이용하여 만든 것이다.
1. [파일] 에서 [새로 만들기] > [프로젝트] 를 클릭한다.
2. 좌측 최신 템플릿에서 [Visual C#]을 클릭하고 바로 오른쪽에 [.NET Framework 4]를 설정한 후
[Windows Forms 응용 프로그램]을 설정한다.
3. [이름] 에 프로젝트 이름을 기입한 후 [확인]을 클릭한다.
4. 프로젝트에서 [참조]를 오른쪽 마우스로 클릭한 후 [참조 추가]를 클릭한다.
5. Aforge를 설치된 폴더로 가면 Framework 폴더가 있다.
Framework 폴더 안에 Release 폴더에서 AForge.Controls.dll, AForge.Video.dll,
AFroge.Video.DirectShow.dll 폴더를 추가한다.
6. [Form1] 의 [Size] 속성에서 크기를 684, 569 로 세팅한다.
7. [보기] 메뉴에서 [도구상자]를 클릭한다.
8. 나타난 [도구상자]에서 [일반]탭 아래에 마우스 포인터를 가져다 두고 오른쪽을 클릭한다.
9. [항목선택]을 클릭하면 [도구 상자 항목 선택] 창이 나타난다.
10. [.NET Framework 구성 요소]탭을 클릭 후 아래의 [찾아보기]버튼을 클릭하여
Aforge 를 설치한 폴더로 간다. (나는 C:\Program Files\AForge.NET 폴더에 설치함)
11. Framework 폴더로 들어가서 Release 폴더 안에 AForge.Controls.dll 파일을 선택한다.
12. 그러면 여러개가 추가 되는데 이에 [일반]탬의 [VideoSourcePlayer]을 선택한다.
13. 추가된 [VideoSourcePlayer]의 속성에서 [Name]을 videoPlayer로 Location 을 12,12 로
Size 를 640, 480 으로 설정한다. (사실 이는 꼭 지킬 필요는 없다. 한 번 실습 후 다시 해보면 알 것
이다.)
14. 콤보 박스와 두개 버튼을 추가하여 다음과 같은 속성으로 만든다.
( 이 역시 바꿔도 상관은 없다. 콤보 박스는 웹캠들을 찾아봐서 나오는 순서대로 모두 추가할 것이
고, 하나의 버튼은 웹캠 작동에 또 다른 하나의 버튼은 사진찍기에 사용할 것이다. 상황에 맞게
자신의 디자인을 만들어 보는 것도 나쁘지 않다.)
콤보 : Name - cmbDevice
Location - 12, 500
Size - 157, 20
버튼 1 : Name - btnOK
Location - 175, 498
Size - 75, 23
Text - 준비
버튼 2 : Name - btnPic
Location - 577, 498
Size - 75, 23
Text - 찰칵!
= 참조 추가 DLL :
Aforge를 설치된 폴더로 가면 Framework 폴더가 있다.
Framework 폴더 안에 Release 폴더에서
AForge.Controls.dll
AForge.Video.dll
AFroge.Video.DirectShow.dll
파일을 추가
= 비쥬얼 스튜디오 2019
= 참조 DLL - MyBox 올려둠
= DLL 추가하면 일시적으로 '도구상자' 가 사라짐. 새로 추가 해서 갱신 적용 해야함.
= 일반 PC에서는 정상 구동하지 않음. 최소 노트북처럼 웹캠이 있어야 구동됨.
----------
this.Load += new EventHandler(Form1_Load);
this.FormClosing += new FormClosingEventHandler(Form1_FormClosing);
btnOK.Click += new EventHandler(btnOK_Click);
btnPic.Click += new EventHandler(btnPic_Click);
----------
이부분을 소스로 코딩하지 않고, 디자인 부분에서 바로 이벤트 등록으로 처리함.
----------
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using AForge.Controls;
using AForge.Video.DirectShow;
using System.Drawing.Imaging;
namespace wcam
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
void Form1_Load(object sender, EventArgs e)
{
try
{
FilterInfoCollection fiCollection = new FilterInfoCollection(FilterCategory.VideoInputDevice);
foreach(FilterInfo fi in fiCollection)
{
cmbDevice.Items.Add(fi.MonikerString);
}
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
}
void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
try
{
videoSourcePlayer1.SignalToStop();
videoSourcePlayer1.WaitForStop();
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private void btnOK_Click(object sender, EventArgs e)
{
VideoCaptureDevice cam = new VideoCaptureDevice(cmbDevice.SelectedItem.ToString());
cam.DesiredFrameRate = 30;
videoSourcePlayer1.VideoSource = cam;
videoSourcePlayer1.Start();
}
private void btnPic_Click(object sender, EventArgs e)
{
Bitmap bitMap = videoSourcePlayer1.GetCurrentVideoFrame();
bitMap.Save("TestImage.jpg", ImageFormat.Jpeg);
MessageBox.Show(string.Format("사이즈 - W:{0} H:{1}", bitMap.Width, bitMap.Height), "찍었다!!");
}
}
}