Microsoft MVP성태의 닷넷 이야기
.NET Framework: 615. C# - AForge.NET을 이용한 웹캠 영상 출력 [링크 복사], [링크+제목 복사],
조회: 25633
글쓴 사람
정성태 (techsharer at outlook.com)
홈페이지
첨부 파일
(연관된 글이 3개 있습니다.)

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";
            }
        }
    }
}

다음은, 카메라가 설치된 제 노트북에서 실행한 화면입니다.

video_capture_aforge_1.PNG

(첨부 파일은 이 글의 예제 코드를 포함합니다.)




AForge.NET에 아쉬운 점이 있다면, 2013년의 2.2.5 버전 이후로 업데이트가 중단된 듯하다는 것입니다. 일부 그 명맥을 GitHub에서 개인 자격으로 이어가고는 있으나... 글쎄요...

암튼, 적어도 윈도우 10 환경까지는 무난하게 사용할 수 있습니다.




[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]

[연관 글]






[최초 등록일: ]
[최종 수정일: 10/27/2016]

Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
by SeongTae Jeong, mailto:techsharer at outlook.com

비밀번호

댓글 작성자
 



2017-06-28 02시37분
[초보자] 안녕하세요, AFroge로 테블릿에서 사진촬영하는 프로그램을 만들고있는데요,
혹시 여기서 해상도? 사진의 품질을 높이고 싶은데..어떻게 방법이 없을까요?
지금 해상도가 640,480에 PixelFormat이 Format24bppRgb으로 받아오네요....
[guest]
2017-06-28 12시40분
글쎄요. 해당 태블릿의 카메라가 원하는 품질의 해상도를 먼저 지원하는지 확인해 봐야 하지 않을까요? (저도 위에 소개한 내용 이상으로 AForge를 알진 못합니다.)
정성태

... 61  62  63  64  65  66  67  68  69  70  71  72  73  [74]  75  ...
NoWriterDateCnt.TitleFile(s)
11795정성태12/19/201812656Windows: 154. PowerShell - Zone 별로 DNS 레코드 유형 정보 조회 [1]
11794정성태12/16/201810010오류 유형: 508. Get-AzureWebsite : Request to a downlevel service failed.
11793정성태12/16/201811649개발 환경 구성: 423. NuGet 패키지 제작 - Native와 Managed DLL을 분리하는 방법 [1]
11792정성태12/11/201812407Graphics: 34. .NET으로 구현하는 OpenGL (11) - Per-Pixel Lighting파일 다운로드1
11791정성태12/11/201812414VS.NET IDE: 130. C/C++ 프로젝트의 시작 프로그램으로 .NET Core EXE를 지정하는 경우 닷넷 디버깅이 안 되는 문제 [1]
11790정성태12/11/201810735오류 유형: 507. Could not save daemon configuration to C:\ProgramData\Docker\config\daemon.json: Access to the path 'C:\ProgramData\Docker\config' is denied.
11789정성태12/10/201820641Windows: 153. C# - USB 장치의 연결 및 해제 알림을 위한 WM_DEVICECHANGE 메시지 처리 [2]파일 다운로드2
11788정성태12/4/201810552오류 유형: 506. SqlClient - Value was either too large or too small for an Int32.Couldn't store <2151292191> in ... Column
11787정성태11/29/201814527Graphics: 33. .NET으로 구현하는 OpenGL (9), (10) - OBJ File Format, Loading 3D Models파일 다운로드1
11786정성태11/29/201811172오류 유형: 505. OpenGL.NET 예제 실행 시 "Managed Debugging Assistant 'CallbackOnCollectedDelegate'" 예외 발생
11785정성태11/21/201813598디버깅 기술: 120. windbg 분석 사례 - ODP.NET 사용 시 Finalizer에서 System.AccessViolationException 예외 발생으로 인한 비정상 종료
11784정성태11/18/201813290Graphics: 32. .NET으로 구현하는 OpenGL (7), (8) - Matrices and Uniform Variables, Model, View & Projection Matrices파일 다운로드1
11783정성태11/18/201811384오류 유형: 504. 윈도우 환경에서 docker가 설치된 컴퓨터 간의 ping IP 주소 풀이 오류
11782정성태11/18/201811152Windows: 152. 윈도우 10에서 사라진 "Adapters and Bindings" 네트워크 우선순위 조정 기능 - 두 번째 이야기
11781정성태11/17/201813365개발 환경 구성: 422. SFML.NET 라이브러리 설정 방법 [1]파일 다운로드1
11780정성태11/17/201814839오류 유형: 503. vcpkg install bzip2 빌드 에러 - "Error: Building package bzip2:x86-windows failed with: BUILD_FAILED"
11779정성태11/17/201815227개발 환경 구성: 421. vcpkg 업데이트 [1]
11778정성태11/14/201813012.NET Framework: 803. UWP 앱에서 한 컴퓨터(localhost, 127.0.0.1) 내에서의 소켓 연결
11777정성태11/13/201812031오류 유형: 502. Your project does not reference "..." framework. Add a reference to "..." in the "TargetFrameworks" property of your project file and then re-run NuGet restore.
11776정성태11/13/201811279.NET Framework: 802. Windows에 로그인한 계정이 마이크로소프트의 계정인지, 로컬 계정인지 알아내는 방법
11775정성태11/13/201813828Graphics: 31. .NET으로 구현하는 OpenGL (6) - Texturing파일 다운로드1
11774정성태11/8/201811686Graphics: 30. .NET으로 구현하는 OpenGL (4), (5) - Shader파일 다운로드1
11773정성태11/7/201811449Graphics: 29. .NET으로 구현하는 OpenGL (3) - Index Buffer파일 다운로드1
11772정성태11/6/201813730Graphics: 28. .NET으로 구현하는 OpenGL (2) - VAO, VBO파일 다운로드1
11771정성태11/5/201812905사물인터넷: 56. Audio Jack 커넥터의 IR 적외선 송신기 - 두 번째 이야기 [1]
11770정성태11/5/201819942Graphics: 27. .NET으로 구현하는 OpenGL (1) - OpenGL.Net 라이브러리 [3]파일 다운로드1
... 61  62  63  64  65  66  67  68  69  70  71  72  73  [74]  75  ...