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); }
// 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); }
/// <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)); } } } }
/// <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)); } }