/// <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; } }
/// <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); }
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); }