Esempio n. 1
0
        private unsafe void camera_EventFrame(object sender, EventArgs e)
        {
            uEye.Camera camera = sender as uEye.Camera;

            if (camera == null || !camera.IsOpened)
            {
                return;
            }

            uEye.Defines.DisplayMode mode;
            camera.Display.Mode.Get(out mode);

            if (mode != uEye.Defines.DisplayMode.DiB)
            {
                return;
            }

            int memId;

            camera.Memory.GetActive(out memId);
            camera.Memory.Lock(memId);

            System.IntPtr ptrSrc;
            camera.Memory.ToIntPtr(memId, out ptrSrc);

            fixed(byte *p = incomingBuffer)
            {
                IntPtr ptrDst = (IntPtr)p;

                camera.Memory.CopyImageMem(ptrSrc, memId, ptrDst);
            }

            if (finishline.Enabled)
            {
                bool flush = finishline.Consolidate(incomingBuffer);
                if (flush)
                {
                    ComputeDataRate(finishline.BufferOutput.Length);

                    if (FrameProduced != null)
                    {
                        FrameProduced(this, new FrameProducedEventArgs(finishline.BufferOutput, finishline.BufferOutput.Length));
                    }
                }
            }
            else
            {
                ComputeDataRate(incomingBufferSize);

                if (FrameProduced != null)
                {
                    FrameProduced(this, new FrameProducedEventArgs(incomingBuffer, incomingBufferSize));
                }
            }

            camera.Memory.Unlock(memId);
        }
Esempio n. 2
0
        //private void imageProvider_GrabbingStartedEvent()
        //{
        //    grabbing = true;

        //    if (GrabbingStatusChanged != null)
        //        GrabbingStatusChanged(this, EventArgs.Empty);
        //}

        private void BaumerProvider_BufferProduced(object sender, BufferEventArgs e)
        {
            BGAPI2.Buffer buffer = e.Buffer;
            if (buffer == null || buffer.IsIncomplete || buffer.MemPtr == IntPtr.Zero)
            {
                return;
            }

            int payloadLength = (int)buffer.SizeFilled;

            // Wrap the buffer in an image, convert if needed.
            BGAPI2.Image image = imgProcessor.CreateImage((uint)buffer.Width, (uint)buffer.Height, buffer.PixelFormat, buffer.MemPtr, buffer.MemSize);
            bool         ready = imageFormat == ImageFormat.JPEG || (imageFormat == ImageFormat.Y800 && BaumerHelper.IsY800(image.PixelFormat));

            if (!ready)
            {
                // Color conversion is required.
                BGAPI2.Image transformedImage = GetTransformedImage(image);
                image.Release();
                image = transformedImage;

                int bpp = BaumerHelper.IsY800(image.PixelFormat) ? 1 : 3;
                payloadLength = (int)(image.Width * image.Height * bpp);
            }

            CopyFrame(image, payloadLength);
            image.Release();

            if (imageFormat != ImageFormat.JPEG && finishline.Enabled)
            {
                bool flush = finishline.Consolidate(frameBuffer);
                if (flush)
                {
                    ComputeDataRate(finishline.BufferOutput.Length);

                    if (FrameProduced != null)
                    {
                        FrameProduced(this, new FrameProducedEventArgs(finishline.BufferOutput, finishline.BufferOutput.Length));
                    }
                }
            }
            else
            {
                ComputeDataRate(payloadLength);

                if (FrameProduced != null)
                {
                    FrameProduced(this, new FrameProducedEventArgs(frameBuffer, payloadLength));
                }
            }
        }
Esempio n. 3
0
        private void imageProvider_ImageReadyEvent()
        {
            // Consume the Pylon queue (no copy).
            ImageProvider.Image pylonImage = imageProvider.GetLatestImage();
            if (pylonImage == null)
            {
                return;
            }

            if (finishline.Enabled)
            {
                bool flush = finishline.Consolidate(pylonImage.Buffer);
                imageProvider.ReleaseImage();

                if (flush)
                {
                    ComputeDataRate(finishline.BufferOutput.Length);

                    if (FrameProduced != null)
                    {
                        FrameProduced(this, new FrameProducedEventArgs(finishline.BufferOutput, finishline.BufferOutput.Length));
                    }
                }
            }
            else
            {
                ComputeDataRate(pylonImage.Buffer.Length);

                if (FrameProduced != null)
                {
                    FrameProduced(this, new FrameProducedEventArgs(pylonImage.Buffer, pylonImage.Buffer.Length));
                }

                imageProvider.ReleaseImage();
            }
        }