1
我正嘗試在我的c#應用程序中使用攝像頭拍照。我發現使用DirectShowLib。經過艱苦的研究,我找到了一個如何使用網絡攝像頭的例子,它在屏幕上顯示完美的視頻,但無法將位圖圖像保存在我的意願中。代碼使用DirectShowLib-2005的攝像頭拍攝的照片和視頻
樣品,我發現採取picure將
public Bitmap snapImage()
{
IVMRWindowlessControl9 windowlessCtrl = null;
IBaseFilter vmr9 = null;
vmr9 = (IBaseFilter)new DirectShowLib.VideoMixingRenderer9();
DirectShowLib.IVMRFilterConfig9 filterConfig = (DirectShowLib.IVMRFilterConfig9)vmr9;
int hr = filterConfig.SetNumberOfStreams(1);
hr = filterConfig.SetRenderingMode(DirectShowLib.VMR9Mode.Windowless);
windowlessCtrl = (IVMRWindowlessControl9)vmr9;
hr = windowlessCtrl.SetVideoClippingWindow(this.PreviewWindow.Handle);
hr = windowlessCtrl.SetAspectRatioMode(VMR9AspectRatioMode.LetterBox);
IntPtr currentImage = IntPtr.Zero;
Bitmap bmp = null;
//this is the line in wich I have problems
hr = windowlessCtrl.GetCurrentImage(out currentImage);
BitmapInfoHeader structure = new BitmapInfoHeader();
Marshal.PtrToStructure(currentImage, structure);
bmp = new Bitmap(structure.Width, structure.Height, (structure.BitCount/8) * structure.Width, System.Drawing.Imaging.PixelFormat.Format32bppArgb, new IntPtr(currentImage.ToInt64() + 40));
return bmp;
}
而且我得到了:錯誤代碼「錯誤HRESULT E_FAIL已經從COM組件的調用返回」 -2147467259
我發現的樣品可以在本頁http://www.codeproject.com/Articles/34663/DirectShow-Examples-for-Using-SampleGrabber-for-Gr
任何人都可以幫我拍快照嗎?或者任何一個可以告訴我怎麼做我想做的事(顯示視頻和拍攝攝像頭的快照)
Thankk你
海,你能解決這個問題。我現在面臨同樣的問題。:-( – 2015-03-05 11:10:10