2010-10-01 20 views
5

Tengo cámaras web Microsoft LifeCam HD-5000. Según AMCap, la cámara emite un flujo MJPEG a 30 fps a 720p. Quiero capturar cada fotograma JPEG en una aplicación pequeña sin hacer ninguna vista previa o descompresión/transcodificación para minimizar el uso de la CPU al mínimo posible.C# Microsoft LifeCam HD captura mjpeg

Soy un desarrollador de C#, pero soy nuevo en DirectShow. ¿Hay una forma simple de capturar la secuencia MJPEG cuadro por cuadro como su salida de la cámara en C# /. NET sin descomprimirla?

Respuesta

1

En primer lugar, es posible que no necesite usar DirectShow para acceder a su cámara. Consulte el proyecto OpenCV, que tiene enlaces .net disponibles en opencvdotnet.

Si desea ir a la ruta de DirectShow, necesitará los enlaces .NET, disponibles en el proyecto directshownet. Creo que su mejor opción será crear un gráfico de filtro que contenga su cámara web como filtro de origen y un capturador de muestras como su filtro de destino. La documentación para el capturador de muestras está en MSDN. Esto le dará acceso a los datos brutos. También puede solicitar un formato de datos particular y usar la conexión inteligente de DirectShow para completar el gráfico de filtro con los filtros de conversión correctos.

Habiendo dicho eso, definitivamente recomiendo OpenCV sobre DirectShow. DirectShow es un propósito muy general, y probablemente hace más de lo que necesita. OpenCV se puede usar para acceder rápidamente a su cámara. Tal vez consulte esta pregunta sobre el stackoverflow Webcam Usage in C# para obtener más información y respuestas.

0

Con DirectShowNet, nunca podría acceder a un solo cuadro y mostrarlo como mapa de bits en cualquier lugar. En cada proyecto, solo veo conversores, show directo a pantalla o transmisión. ¿Cómo capturar la secuencia como marcos de mapa de bits únicos?

0

en el paquete de Descarga Directshow.net, tienen código de muestra y dentro de Capture hay un proyecto DxSnap que se conecta a una cámara web a través de directshow.net y toma una foto de la secuencia. Puede verlo y usarlo como punto de partida.