/// <summary> /// 彩色/灰度图像,根据图像制式,转换图像 /// </summary> HObject ColorImage(HObject ho_Image) { try { HObject ho_ImageOut = null; switch (g_PixelFormat) { case "BayerRG8": HOperatorSet.CfaToRgb(ho_Image, out ho_ImageOut, "bayer_rg", "bilinear"); break; case "BayerBG8": HOperatorSet.CfaToRgb(ho_Image, out ho_ImageOut, "bayer_bg", "bilinear"); break; case "Mono8": ho_ImageOut = ho_Image; break; default: HOperatorSet.CfaToRgb(ho_Image, out ho_ImageOut, "bayer_bg", "bilinear"); break; } return(ho_ImageOut); } catch (Exception ex) { Log.L_I.WriteError(NameClass, ex); return(null); } }
unsafe static void OnImageGrabbed(Object sender, ImageGrabbedEventArgs e) { // The grab result is automatically disposed when the event call back returns. // The grab result can be cloned using IGrabResult.Clone if you want to keep a copy of it (not shown in this sample). try { IGrabResult grabResult = e.GrabResult; // Image grabbed successfully? if (grabResult.GrabSucceeded) { byte[] buffer = grabResult.PixelData as byte[]; fixed(byte *dataGray = buffer) { if (hoImage != null) { hoImage.Dispose(); } HOperatorSet.GenImage1(out hoImage, "byte", (HTuple)Svision.GetMe().baslerCamera.columnNumber, (HTuple)Svision.GetMe().baslerCamera.rowNunber, new IntPtr(dataGray)); } if (grabResult != null) { grabResult.Dispose(); } //camera.StreamGrabber.Stop(); if (Svision.GetMe().baslerCamera.channelNumber != 1) { HOperatorSet.CfaToRgb(hoImage, out hoImage, "bayer_bg", "bilinear"); } isImageOk = true; } else { throw new Exception(grabResult.ErrorCode.ToString() + grabResult.ErrorDescription); } } catch (Exception ex) { errorImageCode = true; errorImageStr = ex.Message; } }
/// <summary> /// 彩色/灰度图像,根据图像制式,转换图像 /// </summary> HObject ColorImage(HObject ho_Image) { try { if (!BlColor) { return(ho_Image); } else { HObject ho_ImageOut = null; #if (SDK) switch (BayerTileFormat_e) { case BayerTileFormat.RGGB: HOperatorSet.CfaToRgb(ho_Image, out ho_ImageOut, "bayer_rg", "bilinear"); break; case BayerTileFormat.GRBG: HOperatorSet.CfaToRgb(ho_Image, out ho_ImageOut, "bayer_gr", "bilinear"); break; case BayerTileFormat.GBRG: HOperatorSet.CfaToRgb(ho_Image, out ho_ImageOut, "bayer_gb", "bilinear"); break; case BayerTileFormat.BGGR: HOperatorSet.CfaToRgb(ho_Image, out ho_ImageOut, "bayer_bg", "bilinear"); break; } #endif return(ho_ImageOut); } } catch (Exception ex) { Log.L_I.WriteError(NameClass, ex); return(null); } }
/// <summary> /// 创建HImage /// </summary> /// <param name="ePixelFormat">像素类型</param> /// <param name="width">宽度</param> /// <param name="height">高度</param> /// <param name="imagePtr">图像指针</param> /// <param name="hImage">H图像</param> /// <returns></returns> private static bool CreateHImage(ImageInfo imageInfo, out HObject hImage) { HOperatorSet.GenEmptyObj(out hImage); try { switch (imageInfo.PixelFormat) { case EPixelFormatType.GVSP_PIX_MONO8: hImage?.Dispose(); HOperatorSet.GenImage1(out hImage, "byte", imageInfo.Width, imageInfo.Height, imageInfo.ImagePtr); break; case EPixelFormatType.GVSP_PIX_RGB8_PACKED: hImage?.Dispose(); HOperatorSet.GenImageInterleaved(out hImage, imageInfo.ImagePtr, "rgb", imageInfo.Width, imageInfo.Height, -1, "byte", 0, 0, 0, 0, -1, 0); break; case EPixelFormatType.GVSP_PIX_BGR8_PACKED: hImage?.Dispose(); HOperatorSet.GenImageInterleaved(out hImage, imageInfo.ImagePtr, "bgr", imageInfo.Width, imageInfo.Height, -1, "byte", 0, 0, 0, 0, -1, 0); break; case EPixelFormatType.GVSP_PIX_RGBA8_PACKED: hImage?.Dispose(); HOperatorSet.GenImageInterleaved(out hImage, imageInfo.ImagePtr, "rgbx", imageInfo.Width, imageInfo.Height, -1, "byte", 0, 0, 0, 0, -1, 0); break; case EPixelFormatType.GVSP_PIX_BGRA8_PACKED: hImage?.Dispose(); HOperatorSet.GenImageInterleaved(out hImage, imageInfo.ImagePtr, "bgrx", imageInfo.Width, imageInfo.Height, -1, "byte", 0, 0, 0, 0, -1, 0); break; case EPixelFormatType.GVSP_PIX_BAYGB8: { hImage?.Dispose(); //生成bayer图像 HObject hBayerImage; HOperatorSet.GenImage1(out hBayerImage, "byte", imageInfo.Width, imageInfo.Height, imageInfo.ImagePtr); HOperatorSet.CfaToRgb(hBayerImage, out hImage, "bayer_gb", "bilinear"); hBayerImage?.Dispose(); break; } case EPixelFormatType.GVSP_PIX_BAYGR8: { hImage?.Dispose(); //生成bayer图像 HObject hBayerImage; HOperatorSet.GenImage1(out hBayerImage, "byte", imageInfo.Width, imageInfo.Height, imageInfo.ImagePtr); HOperatorSet.CfaToRgb(hBayerImage, out hImage, "bayer_gr", "bilinear"); hBayerImage?.Dispose(); break; } case EPixelFormatType.GVSP_PIX_BAYRG8: { hImage?.Dispose(); //生成bayer图像 HObject hBayerImage; HOperatorSet.GenImage1(out hBayerImage, "byte", imageInfo.Width, imageInfo.Height, imageInfo.ImagePtr); HOperatorSet.CfaToRgb(hBayerImage, out hImage, "bayer_rg", "bilinear"); hBayerImage?.Dispose(); break; } case EPixelFormatType.GVSP_PIX_BAYBG8: { hImage?.Dispose(); //生成bayer图像 HObject hBayerImage; HOperatorSet.GenImage1(out hBayerImage, "byte", imageInfo.Width, imageInfo.Height, imageInfo.ImagePtr); HOperatorSet.CfaToRgb(hBayerImage, out hImage, "bayer_bg", "bilinear"); hBayerImage?.Dispose(); break; } default: return(false); } return(true); } catch (Exception) { throw; } }