Esempio n. 1
0
        /// <summary>
        /// 红外图绘制
        /// </summary>
        /// <param name="graphic"></param>
        /// <param name="w"></param>
        /// <param name="h"></param>
        /// <returns></returns>
        bool DrawImages(Graphics graphic, int w, int h)
        {
            if (!_DataDisplay.GetDevice().IsProcessingImage())
            {
                return(false);
            }

            IntPtr pIrData = IntPtr.Zero;
            IntPtr pIrInfo = IntPtr.Zero;;

            if (!_DataDisplay.GetDevice().GetOutputBMPdata(ref pIrData, ref pIrInfo))
            {
                return(false);
            }

            GroupSDK.CAMERA_INFO info = _DataDisplay.GetDevice().GetCamInfo();

            IntPtr hDC = graphic.GetHdc();

            WINAPI.SetStretchBltMode(hDC, WINAPI.StretchMode.STRETCH_HALFTONE);
            WINAPI.StretchDIBits(hDC, 0, 0, w, h, 0, 0, info.intVideoWidth,
                                 info.intVideoHeight, pIrData, pIrInfo, (uint)WINAPI.PaletteMode.DIB_RGB_COLORS,
                                 (uint)WINAPI.ExecuteOption.SRCCOPY);


            graphic.ReleaseHdc();

            return(true);
        }
Esempio n. 2
0
 /// <summary>
 /// 检测大于极限温度的值
 /// </summary>
 /// <param name="values"></param>
 public List <ImgPosition> NewGetInfo(  )
 {
     try
     {
         list.Clear();
         device      = _DataDisplay.GetDevice();
         cAMERA_INFO = device.GetCamInfo();
         tempr       = new int[cAMERA_INFO.intFPAHeight * cAMERA_INFO.intFPAWidth];                       //可以优化,改成固定值
         device.GetTemperatureData(tempr, (uint)(cAMERA_INFO.intFPAHeight * cAMERA_INFO.intFPAWidth), 1); //获取整帧图像热点
         for (int x = 1; x <= cAMERA_INFO.intFPAWidth; x += Globals.DetectionAccuracy)                    //X轴
         {
             for (int y = 1; y <= cAMERA_INFO.intFPAHeight; y += Globals.DetectionAccuracy)               //Y轴
             {
                 float temper = tempr[x * y] * 0.001f;                                                    // device.GetTemperatureProbe((uint)x, (uint)y,(uint)Globals.DetectionAccuracy) * 0.001f;//获取温度 检测精度 1  有60*80的点 精度越高时间越长
                 if (temper >= LimitTmper)                                                                //如果大于等于极限温度
                 {
                     img.tmper = temper;
                     img.x     = x;
                     img.y     = y;
                     list.Add(img);
                 }
             }
         }
         list.Sort(new ImgPosition());
         // FormMain.GetOPCTaskInfo("一共有" + list.Count + "个点");
         return(list);
     }
     catch (Exception ex)
     {
         throw ex;
     }
 }
Esempio n. 3
0
        /// <summary>
        /// 鼠标测温
        /// </summary>
        /// <param name="graphic"></param>
        /// <param name="w"></param>
        /// <param name="h"></param>
        void DrawMouseTemp(Graphics graphic, int w, int h)
        {
            Point pt = MousePosition;

            Point ptLeftUp    = this.PointToScreen(new Point(0, 0));
            Point ptRightDown = this.PointToScreen(new Point(this.Width - 1, this.Height - 1));

            if (pt.X > ptRightDown.X || pt.X < ptLeftUp.X || pt.Y > ptRightDown.Y || pt.Y < ptLeftUp.Y)
            {
                return;
            }

            MagDevice device = _DataDisplay.GetDevice();

            GroupSDK.CAMERA_INFO info = device.GetCamInfo();

            int intFPAx = _ptMouse.X * info.intFPAWidth / w;                          //鼠标X
            int intFPAy = info.intFPAHeight - _ptMouse.Y * info.intFPAHeight / h - 1; //鼠标Y

            int intTemp = device.GetTemperatureProbe((uint)intFPAx, (uint)intFPAy, 1);

            GroupSDK.FIX_PARAM param = new GroupSDK.FIX_PARAM();
            device.GetFixPara(ref param);

            if (_DataDisplay.GetDisplayConfig().bEnableExtCorrect)
            {
                intTemp = device.FixTemperature(intTemp, param.fEmissivity, (uint)intFPAx, (uint)intFPAy);
            }


            string sText = (intTemp * 0.001f).ToString("0.0") + "坐标X:" + intFPAx + "坐标Y:" + intFPAy;

            int cx = (int)graphic.MeasureString(sText, this.Font).Width;
            int cy = (int)graphic.MeasureString(sText, this.Font).Height;

            int x = _ptMouse.X;
            int y = _ptMouse.Y - cy; //默认右上

            if (_ptMouse.Y < cy)     //处于上边沿
            {
                y = _ptMouse.Y + 16;

                if (_ptMouse.X < cx)//处于左边沿
                {
                    x = _ptMouse.X + 16;
                }
                else
                {
                    x = _ptMouse.X - cx;
                }
            }
            else if (_ptMouse.X > w - cx)//右边沿
            {
                x = _ptMouse.X - cx;
            }

            graphic.FillRectangle(Brushes.White, new Rectangle(x, y, cx, cy));
            graphic.DrawString(sText, this.Font, Brushes.Black, (float)x, (float)y);
        }
Esempio n. 4
0
        public bool Play()
        {
            GroupSDK.CAMERA_INFO cam_info = _MagDevice.GetCamInfo();

            GroupSDK.OUTPUT_PARAM param = new GroupSDK.OUTPUT_PARAM();
            param.intFPAWidth       = (uint)cam_info.intFPAWidth;
            param.intFPAHeight      = (uint)cam_info.intFPAHeight;
            param.intBMPWidth       = (uint)cam_info.intVideoWidth;
            param.intBMPHeight      = (uint)cam_info.intVideoHeight;
            param.intColorbarWidth  = 20;
            param.intColorbarHeight = 100;

            if (_MagDevice.StartProcessImage(param, NewFrame, (uint)GroupSDK.STREAM_TYPE.STREAM_TEMPERATURE, 0))
            {
                _MagDevice.SetColorPalette(GroupSDK.COLOR_PALETTE.IRONBOW);
                return(true);
            }

            return(false);
        }
Esempio n. 5
0
        /// <summary>
        /// 启动设备
        /// </summary>
        /// <returns>是否成功</returns>
        private Boolean Start()
        {
            GroupSDK.CAMERA_INFO  info  = mMagDevice.GetCamInfo();
            GroupSDK.OUTPUT_PARAM param = new GroupSDK.OUTPUT_PARAM();
            param.intFPAWidth       = (UInt32)info.intFPAWidth;
            param.intFPAHeight      = (UInt32)info.intFPAHeight;
            param.intBMPWidth       = (UInt32)info.intVideoWidth;
            param.intBMPHeight      = (UInt32)info.intVideoHeight;
            param.intColorbarWidth  = 20;
            param.intColorbarHeight = 100;

            mMagDevice.AutoFocus();

            if (!mMagDevice.StartProcessImage(param, mOnNewFrame, (UInt32)GroupSDK.STREAM_TYPE.STREAM_TEMPERATURE, IntPtr.Zero))
            {
                return(false);
            }

            mMagDevice.SetColorPalette(GroupSDK.COLOR_PALETTE.IRONBOW);

            return(true);
        }