2010-10-01 17 views
5

Posiadam kamery internetowe Microsoft LifeCam HD-5000. Według AMCap, kamera wyprowadza strumień MJPEG z prędkością 30 klatek na sekundę przy 720p. Chcę przechwytywać każdą ramkę JPEG w małej aplikacji bez wykonywania podglądu lub dekompresji/transkodowania, aby zminimalizować wykorzystanie procesora do minimum.C# Microsoft LifeCam HD przechwytywanie mjpeg

Jestem programistą C#, ale jestem nowy w DirectShow. Czy istnieje prosty sposób przechwytywania strumienia MJPEG klatka po klatce jako jego wyjście z kamery w C#/.NET bez jego dekompresji?

Odpowiedz

1

Po pierwsze, może nie być konieczne korzystanie z programu DirectShow w celu uzyskania dostępu do aparatu. Sprawdź projekt OpenCV, który ma powiązania .net dostępne pod adresem opencvdotnet.

Jeśli chcesz przejść na trasę DirectShow, będziesz potrzebować powiązań .NET, dostępnych w projekcie directshownet. Uważam, że najlepiej będzie utworzyć wykres filtru zawierający kamerę internetową jako filtr źródłowy i próbkę jako filtr docelowy. Dokumentacja dla grabbera próbek znajduje się na MSDN. Da ci to dostęp do nieprzetworzonych danych. Możesz także poprosić o konkretny format danych i użyć inteligentnego połączenia DirectShow, aby wypełnić wykres filtra odpowiednimi filtrami konwersji.

Mimo to, zdecydowanie polecam OpenCV przez DirectShow. DirectShow ma bardzo ogólny cel i prawdopodobnie robi więcej, niż tego potrzebujesz. OpenCV może być używany do szybkiego dostępu do kamery. Być może sprawdź to pytanie stackoverflow Webcam Usage in C#, aby uzyskać więcej informacji i odpowiedzi.

0

Dzięki DirectShowNet nigdy nie mogłem uzyskać dostępu do pojedynczej ramki i pokazywać ją jako mapę bitową w dowolnym miejscu. W każdym projekcie widzę tylko konwertery, bezpośrednie pokazy na ekranie lub streaming. Jak przechwycić strumień jako pojedyncze ramki bitmapowe?

0

w pakiecie do pobrania Directshow.net, mają przykładowy kod, a wewnątrz Przechwytuj znajduje się projekt DxSnap, który łączy się z kamerą internetową za pośrednictwem directshow.net i przyciąga obraz ze strumienia. Możesz go zobaczyć i użyć go jako miejsca początkowego.