/// <summary> /// 停止采集 /// </summary> public void StopGrabbing() { if (camera.StreamGrabber.IsGrabbing) { GrabModel = GrabModelEnum.StopGrabbing; camera.StreamGrabber.Stop(); } }
// 相机取像回调函数. private void OnImageGrabbed(Object sender, ImageGrabbedEventArgs e) { try { stopWatch.Restart(); // Acquire the image from the camera. Only show the latest image. The camera may acquire images faster than the images can be displayed. // Get the grab result. IGrabResult grabResult = e.GrabResult; // Check if the image can be displayed. if (grabResult.GrabSucceeded) { ImageType imageType = ImageType.ImageGrey; //stopWatch.Restart(); //判断是否是黑白图片格式 if (grabResult.PixelTypeValue == PixelType.Mono8) { this.Image = BuffersToImageGray(grabResult); } else if (grabResult.PixelTypeValue == PixelType.BayerBG8 || grabResult.PixelTypeValue == PixelType.BayerGB8 || grabResult.PixelTypeValue == PixelType.BayerRG8 || grabResult.PixelTypeValue == PixelType.BayerGR8) { imageType = ImageType.ImageColor; this.Image = BuffersToImage24PlanarColor(grabResult); } if (GrabModel == GrabModelEnum.GrabOne) { GrabModel = GrabModelEnum.StopGrabbing; } if (processImageEvent != null) { // 抛出图像处理事件 processImageEvent(this.Image, imageType); } } } catch (Exception ex) { this.Image = null; } finally { // Dispose the grab result if needed for returning it to the grab loop. e.DisposeGrabResultIfClone(); grabTime = stopWatch.ElapsedMilliseconds; if (eventComputeGrabTime != null) { eventComputeGrabTime(grabTime); } } }
/// <summary> /// 开始采集 /// </summary> public void StartGrabbing() { if (camera.StreamGrabber.IsGrabbing) { //throw new Exception("相机当前正处于采集状态!"); return; } else { GrabModel = GrabModelEnum.StartGrabbing; camera.Parameters[PLCamera.AcquisitionMode].SetValue(PLCamera.AcquisitionMode.Continuous); camera.StreamGrabber.Start(GrabStrategy.LatestImages, GrabLoop.ProvidedByStreamGrabber); //stopWatch.Reset(); //stopWatch.Start();// **** 重启采集时间计时器 **** } }
/// <summary> /// 单张采集 /// </summary> public bool GrabOne() { if (camera.StreamGrabber.IsGrabbing) { return(true); //throw new Exception("相机当前正处于采集状态!"); } else { GrabModel = GrabModelEnum.GrabOne; camera.Parameters[PLCamera.AcquisitionMode].SetValue(PLCamera.AcquisitionMode.SingleFrame); camera.StreamGrabber.Start(1, GrabStrategy.LatestImages, GrabLoop.ProvidedByStreamGrabber); //stopWatch.Reset(); //stopWatch.Start();// **** 重启采集时间计时器 **** return(true); } }