티스토리 뷰

참고 사이트 : m.blog.naver.com/PostView.nhn?blogId=paksejong15&logNo=150124332567&proxyReferer=https:%2F%2Fwww.google.com%2F

 

참고한 내용 : 

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), "찍었다!!");
        }

    }
}
Total
Today
Yesterday
최근에 올라온 글
«   2025/01   »
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