Beispiel #1
0
        //获得相机个数
        public static int getCameras()
        {
            camAnz = 0;
            if (hCameraContainer != GigeApi.SVGigE_NO_CLIENT)
            {
                myApi.Gige_CameraContainer_delete(hCameraContainer);
            }
            hCameraContainer = myApi.Gige_CameraContainer_create(GigeApi.SVGigETL_Type.SVGigETL_TypeFilter);

            if (hCameraContainer >= 0)
            {
                errorflag = myApi.Gige_CameraContainer_discovery(hCameraContainer);
                if (errorflag == GigeApi.SVSGigeApiReturn.SVGigE_SUCCESS)
                {
                    camAnz = myApi.Gige_CameraContainer_getNumberOfCameras(hCameraContainer);
                }
            }

            if (camAnz > 0)
            {
                CameraList = new SVS_Camera[camAnz];
                for (int i = 0; i < camAnz; i++)
                {
                    CameraList[i]             = new SVS_Camera();
                    CameraList[i].CameraIndex = i;
                    CameraList[i].InitSvsCamer(1);
                    CameraList[i].SetSVSCameraMode(0);
                    CameraList[i].hCamera   = SVS_CameraSys.myApi.Gige_CameraContainer_getCamera(SVS_CameraSys.hCameraContainer, i);
                    CameraList[i].modelname = SVS_CameraSys.myApi.Gige_Camera_getModelName(CameraList[i].hCamera);
                    CameraList[i].SN        = SVS_CameraSys.myApi.Gige_Camera_getSerialNumber(CameraList[i].hCamera);

                    CameraList[i].GetSvsCamFps(); //帧率初始化
                    CameraList[i].GetExpTime();   //曝光时间初始化
                    CameraList[i].GetGainValue(); //增益初始化
                    CameraList[i].StopLive();
                }
            }
            return(camAnz);
        }
Beispiel #2
0
        //相机初始化
        public void InitSvsCamer(int FilterMode)
        {
            //hCamera = new IntPtr(-1);
            //hCameraContainer = -1;
            //PacketSize = 0;

            //switch (FilterMode)
            //{
            //    case 1:  //Filter 模式
            //        if (hCameraContainer != GigeApi.SVGigE_NO_CLIENT)
            //        {
            //            myApi.Gige_CameraContainer_delete(hCameraContainer);
            //        }
            //        hCameraContainer = myApi.Gige_CameraContainer_create(GigeApi.SVGigETL_Type.SVGigETL_TypeFilter);
            //        break;
            //    case 2: //WinSock模式
            //       if (hCameraContainer != GigeApi.SVGigE_NO_CLIENT)
            //        {
            //            myApi.Gige_CameraContainer_delete(hCameraContainer);

            //        }
            //        hCameraContainer = myApi.Gige_CameraContainer_create(GigeApi.SVGigETL_Type.SVGigETL_TypeWinSock);
            //        break;
            //}


            hCamera = new IntPtr(GigeApi.SVGigE_NO_CAMERA);
            SVS_CameraSys.myApi.Gige_CameraContainer_discovery(SVS_CameraSys.hCameraContainer);                        //查找相机
            hCamera = SVS_CameraSys.myApi.Gige_CameraContainer_getCamera(SVS_CameraSys.hCameraContainer, CameraIndex); //获得指定相机


            if (hCamera.ToInt32() != 0)
            {
                modelname = SVS_CameraSys.myApi.Gige_Camera_getModelName(hCamera);//获得相机名
                GigeApi.SVSGigeApiReturn ret = SVS_CameraSys.myApi.Gige_Camera_openConnection(hCamera, timeout);
                if (ret != GigeApi.SVSGigeApiReturn.SVGigE_SUCCESS)
                {
                    System.Windows.Forms.MessageBox.Show("相机连接失败: " + ret);//连接相机
                }
                GigeCallBack = new GigeApi.StreamCallback(myStreamCallback);
                SVS_CameraSys.myApi.Gige_Camera_evaluateMaximalPacketSize(hCamera, ref (PacketSize));                                                               //获取数据包
                SVS_CameraSys.myApi.Gige_Camera_setBinningMode(hCamera, GigeApi.BINNING_MODE.BINNING_MODE_OFF);                                                     //关闭Binning
                SVS_CameraSys.myApi.Gige_StreamingChannel_create(ref (hStreamingChannel), SVS_CameraSys.hCameraContainer, hCamera, 3, GigeCallBack, new IntPtr(0)); //创建数据通道

                SVS_CameraSys.myApi.Gige_Camera_getSizeX(hCamera, ref (camWidth));                                                                                  //获得图像宽
                SVS_CameraSys.myApi.Gige_Camera_getSizeY(hCamera, ref (camHeight));                                                                                 //获得图像高



                GigeApi.SVSGigeApiReturn apiReturn;
                PixelDepth = GigeApi.SVGIGE_PIXEL_DEPTH.SVGIGE_PIXEL_DEPTH_8;
                apiReturn  = SVS_CameraSys.myApi.Gige_Camera_getPixelDepth(hCamera, ref (PixelDepth));//获得位深度
                if (apiReturn == GigeApi.SVSGigeApiReturn.SVGigE_SUCCESS)
                {
                    switch (PixelDepth)
                    {
                    case (GigeApi.SVGIGE_PIXEL_DEPTH.SVGIGE_PIXEL_DEPTH_8): { bitCount = 8; break; }

                    case (GigeApi.SVGIGE_PIXEL_DEPTH.SVGIGE_PIXEL_DEPTH_12): { bitCount = 12; break; }

                    case (GigeApi.SVGIGE_PIXEL_DEPTH.SVGIGE_PIXEL_DEPTH_16): { bitCount = 16; break; }

                    default: { bitCount = 8; break; }
                    }
                }

                bayerPttern = false;
                PixelType   = GigeApi.GVSP_PIXEL_TYPE.GVSP_PIX_UNKNOWN;
                apiReturn   = SVS_CameraSys.myApi.Gige_Camera_getPixelType(hCamera, ref (PixelType));//获得颜色格式
                if (apiReturn == GigeApi.SVSGigeApiReturn.SVGigE_SUCCESS)
                {
                    switch (PixelType)
                    {
                    case GigeApi.GVSP_PIXEL_TYPE.GVSP_PIX_MONO8: { bayerPttern = false; break; }

                    case GigeApi.GVSP_PIXEL_TYPE.GVSP_PIX_MONO12: { bayerPttern = false; break; }

                    case GigeApi.GVSP_PIXEL_TYPE.GVSP_PIX_MONO16: { bayerPttern = false; break; }

                    case GigeApi.GVSP_PIXEL_TYPE.GVSP_PIX_RGB24: { bayerPttern = true; break; }

                    case GigeApi.GVSP_PIXEL_TYPE.GVSP_PIX_BAYGR8: { bayerPttern = true; break; }

                    case GigeApi.GVSP_PIXEL_TYPE.GVSP_PIX_BAYRG8: { bayerPttern = true; break; }

                    case GigeApi.GVSP_PIXEL_TYPE.GVSP_PIX_BAYGB8: { bayerPttern = true; break; }

                    case GigeApi.GVSP_PIXEL_TYPE.GVSP_PIX_BAYBG8: { bayerPttern = true; break; }

                    case GigeApi.GVSP_PIXEL_TYPE.GVSP_PIX_BAYGR12: { bayerPttern = true; break; }

                    case GigeApi.GVSP_PIXEL_TYPE.GVSP_PIX_BAYRG12: { bayerPttern = true; break; }

                    case GigeApi.GVSP_PIXEL_TYPE.GVSP_PIX_BAYGB12: { bayerPttern = true; break; }

                    case GigeApi.GVSP_PIXEL_TYPE.GVSP_PIX_BAYBG12: { bayerPttern = true; break; }

                    default: { bayerPttern = false; break; }
                    }
                }
            }

            imagebuffer = new imagebufferStruct[bufferCount];
            imagebuffer[0].imagebytes    = new byte[camHeight * camWidth];
            imagebufferRGB               = new imagebufferStruct[bufferCount];
            imagebufferRGB[0].imagebytes = new byte[3 * camWidth * camHeight];
        }