Beispiel #1
0
        /// <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;
            }
        }
Beispiel #3
0
        /// <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;
            }
        }