使用EmguCV3.0.0调用摄像头并设置帧率
此教程使用emgu3.0.0,其他版本兼容性未知。
转载请注明出处: http://www.cnblogs.com/zaiyuzhong/p/open-camera-with-emgu3_0_0.html
先说设置帧率,是通过调用Capture实例的SetCaptureProperty方法:
capture.SetCaptureProperty(CapProp.Fps, 帧率数);
该方法可以设置绝大多数摄像头参数。相应的,可以通过GetCaptureProperty获得这些参数。
该示例只需引用 Emgu.CV.dll 和 Emgu.Util.dll
1 var capture = new Capture(0); //这里打开第一个, 多个摄像头先获取名字数组, 再根据名字获得对应下标 2 capture.SetCaptureProperty(CapProp.Fps, 1); 3 var ts = new ThreadStart(() => 4 { 5 while(!shouldStop) 6 { 7 var image = capture.QueryFrame(); // image是Emgu.CV.Mat类型 8 } 9 }); 10 shouldStop = false; 11 new Thread(ts){ IsBackground = true }.Start();
1 public Bitmap ConvertMat2Bitmap(Mat cvImg) 2 { 3 Bitmap bmpImg; 4 if (cvImg.Depth != DepthType.Cv8U) 5 { 6 bmpImg = new Bitmap(1, 1, PixelFormat.Format8bppIndexed); 7 return bmpImg; 8 } 9 var pixelFormat = PixelFormat.Format8bppIndexed; 10 if (cvImg.NumberOfChannels == 3) 11 pixelFormat = PixelFormat.Format24bppRgb; 12 else if (cvImg.NumberOfChannels == 4) 13 pixelFormat = PixelFormat.Format32bppArgb; 14 bmpImg = new Bitmap(cvImg.Cols, cvImg.Rows, cvImg.Step, pixelFormat, Marshal.UnsafeAddrOfPinnedArrayElement(cvImg.Data, 0)); 15 return bmpImg; 16 }
最近家里没电脑, 等等我实验一下3.1
最后别忘了释放Capture实例