/// <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();//显示映美金图像 } }
/// <summary> /// Show assigned image buffer. /// </summary> /// <param name="buffer"></param> private void ShowImageBuffer(TIS.Imaging.ImageBuffer buffer) { CameraCtrl.DisplayImageBuffer(buffer); buffer.Unlock(); }