コード例 #1
0
 public IdentificationInfo(string lNumber, LicensePlateTypes lType, Color lColor, Image pImage, Image vImage, DateTime iTime)
 {
     this.LicensePlateNumber = lNumber;
     this.LicensePlateType   = lType;
     this.LicensePlateColor  = lColor;
     this.PanoramaImage      = pImage;
     this.VehicleImage       = vImage;
     this.IdentificationTime = iTime;
 }
コード例 #2
0
 public PlateEventArgs(int handle, string ip, string licensePlateNumber, LicensePlateTypes licensePlateType, Color licensePlateColor, Image panoramaImage, Image vehicleImage, DateTime identificationTime)
 {
     Handle             = handle;
     IP                 = ip;
     LicensePlateNumber = licensePlateNumber;
     LicensePlateType   = licensePlateType;
     LicensePlateColor  = licensePlateColor;
     PanoramaImage      = panoramaImage;
     VehicleImage       = vehicleImage;
     IdentificationTime = identificationTime;
 }
コード例 #3
0
        private void PlateReceived(int hwnd, string ip, string licensePlateNumber, LicensePlateTypes licensePlateType, Color licensePlateColor, Image pImage, Image vImage, DateTime identificationTime)
        {
            if (hwnd == -1)
            {
                hwnd = m_connectionCamera.Where(w => w.IP == ip).Select(s => s.CameraHwnd).FirstOrDefault();
            }
            else if (string.IsNullOrEmpty(ip))
            {
                ip = m_connectionCamera.Where(w => w.CameraHwnd == hwnd).Select(s => s.IP).FirstOrDefault();
            }
            PlateEventArgs eventArgs = new PlateEventArgs(hwnd, ip, licensePlateNumber, licensePlateType, licensePlateColor, pImage, vImage, identificationTime);

            if (PlateReceivedChange != null)
            {
                PlateReceivedChange.BeginInvoke(this, eventArgs, null, null);
            }
        }
コード例 #4
0
        private int PlateReceived(string ip, IntPtr buff, int len)
        {
            /* 16KB 用于存储车牌信息足够了 */
            IntPtr pPlateResult = IntPtr.Zero;
            // 车牌特写图临时空间
            IntPtr pPlateJpeg = IntPtr.Zero;
            //获取车牌号
            IntPtr pLicensePlate = IntPtr.Zero;
            //获取车牌颜色
            IntPtr pLinceseColor = IntPtr.Zero;

            try
            {
                pPlateResult = Marshal.AllocHGlobal(16 * 1024);
                pPlateJpeg   = Marshal.AllocHGlobal(32 * 1024);
                int lenght = 0;
                int iRet   = AnShiBaoSDK.IPCSDK_Get_Plate_Info(buff, pPlateResult, ref lenght);
                if (iRet == 0)
                {
                    pLicensePlate = Marshal.AllocHGlobal(20);
                    iRet          = AnShiBaoSDK.IPCSDK_Get_Plate_License(pPlateResult, pLicensePlate);
                    if (iRet == 0)
                    {
                        //车牌号码
                        string strLicensePlateNumber = Marshal.PtrToStringAnsi(pLicensePlate);
                        //车牌类型
                        LicensePlateTypes licensePlateType = LicensePlateTypes.LT_BLUE;
                        //车牌颜色
                        Color licensePlateColor = Color.Blue;

                        pLinceseColor = Marshal.AllocHGlobal(8);
                        iRet          = AnShiBaoSDK.IPCSDK_Get_Plate_Color(pPlateResult, pLinceseColor);
                        if (iRet == 0)
                        {
                            string strPlateColor = Marshal.PtrToStringAnsi(pLinceseColor);
                            switch (strPlateColor)
                            {
                            case "黄":
                                licensePlateColor = Color.Yellow;
                                licensePlateType  = LicensePlateTypes.LT_YELLOW;
                                break;

                            case "白":
                                licensePlateColor = Color.White;
                                break;

                            case "黑":
                                licensePlateColor = Color.Black;
                                licensePlateType  = LicensePlateTypes.LT_BLACK;
                                break;

                            case "绿":
                                licensePlateColor = Color.Green;
                                break;
                            }
                        }

                        string   pImagePath, vImagePath;
                        DateTime now = SetImagePath(strLicensePlateNumber, out pImagePath, out vImagePath);

                        //全景图片
                        Image panoramaImage = GetCameraImage(buff, len, pImagePath);
                        //车牌图片
                        Image vehicleImage = null;

                        iRet = AnShiBaoSDK.IPCSDK_Get_Plate_Jpeg(buff, pPlateJpeg, ref lenght);
                        if (iRet == 0)
                        {
                            //获取车牌图片
                            vehicleImage = GetCameraImage(pPlateJpeg, lenght, vImagePath);
                        }

                        PlateReceviedCallback(-1, ip, strLicensePlateNumber, licensePlateType, licensePlateColor, panoramaImage, vehicleImage, now);
                    }
                }
            }
            catch (Exception ex)
            {
                Log.Error(ex.Message, ex);
            }
            finally
            {
                if (pLinceseColor != IntPtr.Zero)
                {
                    Marshal.FreeHGlobal(pLinceseColor);
                }
                if (pPlateResult != IntPtr.Zero)
                {
                    Marshal.FreeHGlobal(pPlateResult);
                }
                if (pPlateJpeg != IntPtr.Zero)
                {
                    Marshal.FreeHGlobal(pPlateJpeg);
                }
                if (pLicensePlate != IntPtr.Zero)
                {
                    Marshal.FreeHGlobal(pLicensePlate);
                }
            }
            return(0);
        }
コード例 #5
0
 public EnterVehicleInfo(string userName, string lNumber, LicensePlateTypes lType, Color lColor, DateTime iTime, Image pImage, Image vImage)
     : base(lNumber, lType, lColor, pImage, vImage, iTime)
 {
     this.UserName = UserName;
     this.UserType = UserType;
 }
コード例 #6
0
        private int PlateReceived(int tHandle, uint uiImageId, ref QianYiSDK.T_ImageUserInfo tImageInfo, ref QianYiSDK.T_PicInfo tPicInfo)
        {
            //车辆图像
            if (tImageInfo.ucViolateCode != 0)
            {
                return(0);
            }
            if (tImageInfo.szLprResult == null)
            {
                return(0);
            }

            try
            {
                //车牌号码
                string strLicensePlateNumber = Encoding.Default.GetString(tImageInfo.szLprResult).Replace("\0", "");
                if (string.IsNullOrEmpty(strLicensePlateNumber))
                {
                    return(0);
                }
                //车牌类型
                LicensePlateTypes licensePlateType = (LicensePlateTypes)tImageInfo.ucLprType;
                //车牌颜色
                Color licensePlateColor = Color.Blue;

                switch (tImageInfo.ucPlateColor)
                {
                case 0:    //蓝色
                    break;

                case 1:    //黄色
                    licensePlateColor = Color.Yellow;
                    break;

                case 2:    //白色
                    licensePlateColor = Color.White;
                    break;

                case 3:    //黑色
                    licensePlateColor = Color.Black;
                    break;

                case 4:    //其它颜色
                    licensePlateColor = Color.Green;
                    break;

                case 5:    //枚举类型数量,不作为输入参数
                    break;
                }

                string   pImagePath, vImagePath;
                DateTime now = SetImagePath(strLicensePlateNumber, out pImagePath, out vImagePath);

                //全景图片
                Image panoramaImage = GetCameraImage(tPicInfo.ptPanoramaPicBuff, (int)tPicInfo.uiPanoramaPicLen, pImagePath);
                //车牌图片
                Image vehicleImage = GetCameraImage(tPicInfo.ptVehiclePicBuff, (int)tPicInfo.uiVehiclePicLen, vImagePath);

                PlateReceviedCallback(tHandle, string.Empty, strLicensePlateNumber, licensePlateType, licensePlateColor, panoramaImage, vehicleImage, now);
            }
            catch (Exception ex)
            {
                Log.Error(ex.Message, ex);
            }

            return(0);
        }
コード例 #7
0
        private int PlateReceived(int handle, IntPtr pUserData, IntPtr pResult, uint uNumPlates, HuoYanSDK.VZ_LPRC_RESULT_TYPE eResultType, IntPtr pImgFull, IntPtr pImgPlateClip)
        {
            try
            {
                //获取车牌识别结果信息
                HuoYanSDK.TH_PlateResult plateResult;
                if (eResultType != HuoYanSDK.VZ_LPRC_RESULT_TYPE.VZ_LPRC_RESULT_REALTIME)
                {
                    plateResult = (HuoYanSDK.TH_PlateResult)Marshal.PtrToStructure(pResult, typeof(HuoYanSDK.TH_PlateResult));
                    //车牌号码
                    string strLicensePlateNumber = new string(plateResult.license).Replace("\0", "");
                    if (string.IsNullOrEmpty(strLicensePlateNumber))
                    {
                        return(0);
                    }

                    //车辆类型
                    LicensePlateTypes licensePlateType = (LicensePlateTypes)plateResult.nType;
                    //车牌颜色
                    Color licensePlateColor = Color.Blue;
                    switch (plateResult.nColor)
                    {
                    case 0:    //未知
                        break;

                    case 1:    //蓝色
                        break;

                    case 2:    //黄色
                        licensePlateColor = Color.Yellow;
                        break;

                    case 3:    //白色
                        licensePlateColor = Color.White;
                        break;

                    case 4:    //黑色
                        licensePlateColor = Color.Black;
                        break;

                    case 5:    //绿色
                        licensePlateColor = Color.Green;
                        break;
                    }

                    string   pImagePath, vImagePath;
                    DateTime now = SetImagePath(strLicensePlateNumber, out pImagePath, out vImagePath);

                    HuoYanSDK.VzLPRClient_ImageSaveToJpeg(pImgFull, pImagePath, 100);
                    HuoYanSDK.VzLPRClient_ImageSaveToJpeg(pImgPlateClip, vImagePath, 100);

                    Image panoramaImage = new Bitmap(pImagePath);
                    Image vehicleImage  = new Bitmap(vImagePath);

                    PlateReceviedCallback(handle, string.Empty, strLicensePlateNumber, licensePlateType, licensePlateColor, panoramaImage, vehicleImage, now);
                }
            }
            catch (Exception ex)
            {
                Log.Error(ex.Message, ex);
            }
            return(0);
        }
コード例 #8
0
        public virtual string VehicleTypeToStr(LicensePlateTypes licensePlateType)
        {
            string strType = "未知";

            switch (licensePlateType)
            {
            case LicensePlateTypes.LT_UNKNOWN:
                break;

            case LicensePlateTypes.LT_BLUE:
                strType = "蓝牌小汽车";
                break;

            case LicensePlateTypes.LT_BLACK:
                strType = "黑牌小汽车";
                break;

            case LicensePlateTypes.LT_YELLOW:
                strType = "单排黄牌";
                break;

            case LicensePlateTypes.LT_YELLOW2:
                strType = "双排黄牌";
                break;

            case LicensePlateTypes.LT_POLICE:
                strType = "警车车牌";
                break;

            case LicensePlateTypes.LT_ARMPOL:
                strType = "武警车牌";
                break;

            case LicensePlateTypes.LT_ARMPOL2:
                strType = "双排武警车牌";
                break;

            case LicensePlateTypes.LT_INDIVI:
                strType = "个性化车牌";
                break;

            case LicensePlateTypes.LT_ARMY:
                strType = "单排军车牌";
                break;

            case LicensePlateTypes.LT_ARMY2:
                strType = "双排军车牌";
                break;

            case LicensePlateTypes.LT_EMBASSY:
                strType = "使馆车牌";
                break;

            case LicensePlateTypes.LT_HONGKONG:
                strType = "香港进出中国车牌";
                break;

            case LicensePlateTypes.LT_TRACTOR:
                strType = "农用车牌";
                break;

            case LicensePlateTypes.LT_COACH:
                strType = "教练车牌";
                break;

            case LicensePlateTypes.LT_MACAO:
                strType = "澳门进出中国车牌";
                break;
            }
            return(strType);
        }