Beispiel #1
0
        private void camCtl_ImageAvailable(object sender, ICImagingControl.ImageAvailableEventArgs e)
        {
            var    buffer = e.ImageBuffer;
            Bitmap bmp    = new Bitmap(buffer.Bitmap);

            bmp = Grayscale.CommonAlgorithms.RMY.Apply(bmp);
            histoForm.FromImage(bmp);
        }
Beispiel #2
0
        // ImageAvailable event handler. The parameter "e" contains the imagebuffer with the
        // currently snapped image.
        // The image is saved as JPEG file.
        void ic_ImageAvailable(object sender, ICImagingControl.ImageAvailableEventArgs e)
        {
            string filename = String.Format("test{0}.jpg", counter);

            e.ImageBuffer.SaveAsJpeg(filename, 70);
            counter++;
            Console.WriteLine("Saved: " + filename);
        }
Beispiel #3
0
        /// <summary>
        /// The Imaging Source相机回调函数 使用方法: ICImagingControl icImagingControl = new
        /// ICImagingControl(); icImagingControl.MemoryCurrentGrabberColorformat =
        /// ICImagingControlColorformats.IC****; icImagingControl.LiveCaptureContinuous = true;
        /// icImagingControl.ImageAvailable += HalconCameraConverter.ImageAvailable;
        /// HalconCameraConverter.ImageReceived += YourImageProcessFunction; icImagingControl.Tag = deviceName;
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        public static void ImageAvailable(object sender, ICImagingControl.ImageAvailableEventArgs e)
        {
            ICImagingControlColorformats colorformat = ((ICImagingControl)sender).MemoryCurrentGrabberColorformat;
            var ho_Image = new HImage();

            switch (colorformat)
            {
            case ICImagingControlColorformats.ICY800:
                ho_Image = new HImage("byte", e.ImageBuffer.Size.Width, e.ImageBuffer.Size.Height, e.ImageBuffer.GetImageDataPtr());
                break;

            case ICImagingControlColorformats.ICY8:
                var ho_ImageIn = new HImage("byte", e.ImageBuffer.Size.Width, e.ImageBuffer.Size.Height, e.ImageBuffer.GetImageDataPtr());
                ho_Image = ho_ImageIn.MirrorImage("row");
                ho_ImageIn.Dispose();
                break;

            case ICImagingControlColorformats.ICRGB24:
                ho_Image.GenImageInterleaved(e.ImageBuffer.GetImageDataPtr(), "bgr", e.ImageBuffer.Size.Width, e.ImageBuffer.Size.Height, -1, "byte",
                                             e.ImageBuffer.Size.Width, e.ImageBuffer.Size.Height, 0, 0, -1, 0);
                break;

            case ICImagingControlColorformats.IncompatibleColorformat: break;

            case ICImagingControlColorformats.ICRGB32:                 break;

            case ICImagingControlColorformats.ICRGB565:                break;

            case ICImagingControlColorformats.ICRGB555:                break;

            case ICImagingControlColorformats.ICUYVY:                  break;

            case ICImagingControlColorformats.ICYGB1:                  break;

            case ICImagingControlColorformats.ICYGB0:                  break;

            case ICImagingControlColorformats.ICBY8:                   break;

            case ICImagingControlColorformats.ICY16:                   break;

            case ICImagingControlColorformats.ICRGB64:                 break;

            default:
                ho_Image.GenEmptyObj();
                break;
            }

            OnImageReceived.BeginInvoke(sender, ho_Image, ((ICImagingControl)sender).Tag.ToString(), EndingImageReceived, ho_Image);
        }
        /// <summary>
        /// Called when an image becomes available from camera.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void ImageAvailable(object sender, ICImagingControl.ImageAvailableEventArgs e)
        {
            ImageBuffer buff = cam.ImageBuffers[e.bufferIndex];

            double elapsedTime = -1.0;
            double time        = cam.ReferenceTimeCurrent;

            // get time elapsed
            if (lastTime > 0.0)
            {
                elapsedTime = time - lastTime;
            }
            lastTime = time;

            // lock the image buffer so that it is not overwritten while we are saving it.
            buff.Lock();
            bool isImageSet = true;

            imageNumber++;
            IPData data = new IPData(elapsedTime, exposure_s, false, imageNumber);

            try
            {
                data.SetRawDataFromImage(buff.Bitmap);
            }
            catch (Exception inner)
            {
                string          errMsg = "Camera.ImageAvailable : Unable to save image into raw data of IPData object.";
                CameraException ex     = new CameraException(errMsg, inner);
                log.Error(errMsg, ex);
                isImageSet = false;
            }
            buff.Unlock();


            lock (_camLock)
            {
                // only push the image if stored successfully
                if (isImageSet)
                {
                    for (int i = 0; i < subscribers.Count; i++)
                    {
                        subscribers[i].push(new QueueElement(cameraName, data));
                    }
                }
            }
        }
Beispiel #5
0
        /// <summary>
        /// 相機拍攝的所觸發的事件函數
        /// </summary>
        private void icImagingControl1_ImageAvailable(object sender, ICImagingControl.ImageAvailableEventArgs e)
        {
            if (_cameraToggle[0])
            {
                _cameraToggle[0]  = false;
                _displayBuffer[0] = IcImagingControl[0].ImageBuffers[e.bufferIndex];

                unsafe
                {
                    byte *data = _displayBuffer[0].Ptr;
                    _outputMarker[0] = _corPtFltr[0].GetCornerPoint(IcImagingControl[0].ImageSize.Width, IcImagingControl[0].ImageSize.Height, data);

                    _count.Signal();

                    //_are[0].WaitOne();
                }
            }
        }
        private void TIS_ImageAvailable(object sender, ICImagingControl.ImageAvailableEventArgs e)
        {
            try
            {
                //Util.Notify(string.Format("相机{0}收到图像", cameraIndex));
                if (ignoreImage)
                {
                    return;
                }

                //HTuple startTime;
                HOperatorSet.CountSeconds(out startTime);
                // Acquire the image from the camera. Only show the latest image. The camera may acquire images faster than the images can be displayed.

                ImageBuffer ImgBuffer = e.ImageBuffer;
                // Reduce the number of displayed images to a reasonable amount if the camera is acquiring images very fast.
                //if (!stopWatch.IsRunning || stopWatch.ElapsedMilliseconds > 33)
                {
                    //stopWatch.Restart();
                    //if (hPylonImage != null && hPylonImage.IsInitialized())
                    //{
                    //    hPylonImage.Dispose();
                    //}
                    hPylonImage = new HImage();

                    if (ImgBuffer.GetIntPtr() == IntPtr.Zero)
                    {
                        Util.Notify(string.Format("相机{0}数据损坏,采集失败", cameraIndex));
                        return;
                    }

                    if (camera.MemoryCurrentGrabberColorformat == ICImagingControlColorformats.ICY8)
                    {
                        hPylonImage.GenImage1("byte", ImgBuffer.Size.Width, ImgBuffer.Size.Height, ImgBuffer.GetImageDataPtr());
                        HImage imgTmp = hPylonImage.MirrorImage("row");
                        hPylonImage.Dispose();
                        hPylonImage = imgTmp;
                    }
                    else if (camera.MemoryCurrentGrabberColorformat == ICImagingControlColorformats.ICRGB32)
                    {
                        //allocate the m_stream_size amount of bytes in non-managed environment
                        hPylonImage.GenImageInterleaved(ImgBuffer.GetImageDataPtr(), "rgb",
                                                        ImgBuffer.Size.Width, ImgBuffer.Size.Height, -1, "byte", ImgBuffer.Size.Width, ImgBuffer.Size.Height, 0, 0, -1, 0);
                    }
                    else
                    {
                        Util.Notify(string.Format("相机{0}编码格式不正确", cameraIndex));
                    }
                    TrigerImageEvent();
                }
            }
            catch (System.ArgumentException ex)
            {
                Util.WriteLog(this.GetType(), ex);
                Util.Notify(string.Format("相机{0}图像数据包丢失", cameraIndex));
            }
            catch (Exception ex)
            {
                Util.WriteLog(this.GetType(), ex);
                Util.Notify(string.Format("相机{0}图像数据返回出现异常", cameraIndex));
            }
        }