Ejemplo n.º 1
0
 /// <summary>
 /// 停止采集
 /// </summary>
 public void StopGrabbing()
 {
     if (camera.StreamGrabber.IsGrabbing)
     {
         GrabModel = GrabModelEnum.StopGrabbing;
         camera.StreamGrabber.Stop();
     }
 }
Ejemplo n.º 2
0
        // 相机取像回调函数.
        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);
                }
            }
        }
Ejemplo n.º 3
0
 /// <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();// ****  重启采集时间计时器   ****
     }
 }
Ejemplo n.º 4
0
 /// <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);
     }
 }