2010-10-01 4 views
5

Microsoft LifeCam HD-5000 웹캠이 있습니다. AMCap에 따르면이 카메라는 720p에서 30fps의 MJPEG 스트림을 출력합니다. 미리보기 또는 압축 해제/트랜스 코딩을 수행하지 않고도 작은 응용 프로그램에서 각 JPEG 프레임을 캡처하여 CPU 사용을 최소화 할 수 있습니다.C# Microsoft LifeCam HD mjpeg 캡처

저는 C# 개발자이지만 DirectShow를 처음 사용합니다. 압축 해제하지 않고 C#/.NET에서 카메라의 출력으로 프레임 단위로 MJPEG 스트림을 캡처하는 간단한 방법이 있습니까?

답변

1

우선, 카메라에 액세스 할 때 DirectShow를 사용할 필요가 없을 수도 있습니다. opencvdotnet에서 사용할 수있는 .net 바인딩을 가진 OpenCV 프로젝트를 확인하십시오.

DirectShow 경로로 이동하려면 directshownet 프로젝트에서 사용할 수있는 .NET 바인딩이 필요합니다. 최선의 방법은 원본 필터로 웹캠이 포함 된 필터 그래프를 만들고 목적지 필터로 샘플 그래버를 만드는 것입니다. 샘플 그래버에 대한 문서는 MSDN에 있습니다. 이렇게하면 원시 데이터에 액세스 할 수 있습니다. 또한 특정 데이터 형식을 요청하고 DirectShow 지능형 연결을 사용하여 필터 그래프를 올바른 변환 필터로 채울 수 있습니다.

그렇다고해서 DirectShow를 통한 OpenCV를 권장합니다. DirectShow는 매우 일반적인 목적이며, 아마도 당신이 필요로하는 것 이상을 수행 할 것입니다. OpenCV를 사용하면 카메라에 빠르게 액세스 할 수 있습니다. 아마도이 stackoverflow 질문 Webcam Usage in C# 좀 더 자세한 정보 및 답변을 확인하십시오.

0

DirectShowNet을 사용하면 결코 단일 프레임에 액세스하여 어디서나 비트 맵으로 표시 할 수 없습니다. 모든 프로젝트에서 저는 변환기, 스크린 또는 스트리밍을위한 직접 쇼를 봅니다. 단일 비트 맵 프레임으로 스트림을 캡처하는 방법?

0

Directshow.net 다운로드 패키지에는 샘플 코드가 있으며 캡처에는 DirectShow.net을 통해 웹캠에 연결하고 스트림에서 사진을 스냅하는 프로젝트 DxSnap이 있습니다. 그것을보고 시작 지점으로 사용할 수 있습니다.