/// <summary> /// 映美金相机触发出图 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void icImagingControl_ImageAvailable(object sender, TIS.Imaging.ICImagingControl.ImageAvailableEventArgs e) { TIS.Imaging.ImageBuffer CurrentBuffer = icImagingControl.ImageBuffers[e.bufferIndex]; Image <Gray, byte> grayImage = new Image <Gray, byte>(CurrentBuffer.Bitmap); YMJcamera.GetCamParams();//获取内参 //校正畸变 CvInvoke.InitUndistortRectifyMap(TisCamera.cameraMatrix, TisCamera.distCoeffs, null, TisCamera.cameraMatrix, TisCamera.imageSize, DepthType.Cv32F, TisCamera.mapx, TisCamera.mapy); CvInvoke.Remap(grayImage, grayImage, TisCamera.mapx, TisCamera.mapy, Inter.Linear, BorderType.Constant, new MCvScalar(0)); for (int i = 0; i < TisCamera.height; i++) { for (int j = 0; j < TisCamera.width; j++) { TisCamera.YMJImage.Data[i, j, 2] = grayImage.Data[i, j, 0]; TisCamera.YMJImage.Data[i, j, 1] = grayImage.Data[i, j, 0]; TisCamera.YMJImage.Data[i, j, 0] = grayImage.Data[i, j, 0]; } } if (GLB.Camera_index == 1) { DealWithImage.getContoursForYMJ(grayImage, ptbDisplay); ptbDisplay.Image = TisCamera.YMJImage.ToBitmap();//显示映美金图像 } }
private void CameraCtrl_ImageAvailable(object sender, TIS.Imaging.ICImagingControl.ImageAvailableEventArgs e) { try { CameraCtrl.OverlayBitmap.DrawText(Color.Red, 10, 10, _pGPSCtrl.RMCData.LocalTime); CameraCtrl.OverlayBitmap.DrawText(Color.Red, 150, 10, "Lat:" + _pGPSCtrl.RMCData.Latitude + " Log:" + _pGPSCtrl.RMCData.Longitude); CameraCtrl.OverlayBitmap.DrawText(Color.Red, 550, 10, "Speed:" + _pGPSCtrl.RMCData.Speed.ToString()); TIS.Imaging.ImageBuffer ImgBuffer; ImgBuffer = CameraCtrl.ImageActiveBuffer; ImgBuffer.Lock(); // Display the processed image in the IC Imaging Control window. this.BeginInvoke(new ShowBufferDelegate(ShowImageBuffer), ImgBuffer); if (_bIsSave == true) { string strFileName = String.Format("image_{0}_{1}.bmp", (_nSaveCount++), DateTime.Now.ToString("yyyyMMddHHmmssfff")); ImgBuffer.SaveAsBitmap(strFileName); } } catch (Exception ex) { // An exception that occurs here cannot be handled elsewhere. // Therefore, if you are using the ImageAvailable event, watch the debug // output window of your Visual Studio because the message (see below) // will appear there. System.Diagnostics.Debug.WriteLine(ex.Message); } }
/// <summary> /// icImagingControl1_ImageAvailable /// /// This is the ImageAvailable event handler. The number of captured frames is counted by this method. /// If the number of frames is higher than the ring buffer's size, the delegate "EnableCaptureDelegate" /// is called in order to enable the "Capture" button. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void icImagingControl1_ImageAvailable(object sender, TIS.Imaging.ICImagingControl.ImageAvailableEventArgs e) { if (btnCapture.Enabled == false) { if (FrameCount > icImagingControl1.ImageRingBufferSize) { // Now it is time to enable the capture button. BeginInvoke(new EnableCaptureDelegate(EnableCaptureButton)); } else { FrameCount++; } } }
//取流回调函数 private void ImageCallBack(object sender, TIS.Imaging.ICImagingControl.ImageAvailableEventArgs e) { try { //Trace.WriteLine(string.Format("触发回调 = {0}", DateTime.Now.ToString("HH:mm:ss:fff"))); TIS.Imaging.ImageBuffer CurrentBuffer = null; CurrentBuffer = m_ImageControl.ImageBuffers[e.bufferIndex]; bmp_image1 = CurrentBuffer.Bitmap; ho_image1 = Bitmap2HObject(bmp_image1); // bmp_image1 // ReturnImgEvent.Set(); //Trace.WriteLine(string.Format("获取图像 = {0}",DateTime.Now.ToString("HH:mm:ss:fff"))); if (bmp_image1 != null) { bool benableNew = false; if (threadProcess1 == null) { benableNew = true; } else if (!threadProcess1.IsAlive) { benableNew = true; } if (benableNew) { threadProcess1 = new System.Threading.Thread(processCamera01); threadProcess1.Start(); } } } catch (Exception ex) { Trace.WriteLine(ex.Message + "回调失败!!!"); } }
// This is the ImageAvailable event handler public static void OnImageAvailable(object sender, TIS.Imaging.ICImagingControl.ImageAvailableEventArgs e) { // The image is in e.ImageBuffer Console.WriteLine("Image!"); }