使用FlirOneSDK

时间:2019-07-02 13:28:37

标签: xamarin xamarin.android position temperature flir

要获取特定点的温度,您需要X和Y位置。

例如,您可以使用View.IOnTouchListener的OnTouch事件获取像素位置。

示例代码:

public bool OnTouch(View v, MotionEvent e)
{
   Position_X = (int)e.GetX();
   Position_Y = (int)e.GetY();
   return true;
}

和OnFrameProcessed,您的代码应如下所示:

public void OnFrameProcessed(RenderedImage renderedImage)
{
  if (renderedImage.InvokeImageType() == RenderedImage.ImageType.ThermalRadiometricKelvinImage)
  {
      var step = renderedImage.Width();
      var pixel = Position_X + (Position_Y * step);
      var thermalPixels = renderedImage.ThermalPixelValues();
      if (thermalPixels.Length < pixel)
      {
         pixel = thermalPixels.Length - 1;
      }
      //temperature in point
      AvgPointTemperature = (thermalPixels[pixel] / 100.0) - 273.15;
  }
}

我不知道这是否是最好的方法,但这是我找到的方法。

谢谢。

1 个答案:

答案 0 :(得分:0)

Okey,需要Customizing a ContentPage才能从IOS或Android设备获取X和Y。

Android

public override bool OnTouchEvent(MotionEvent e)
{
    Console.WriteLine("x->" + e.GetX() + "y->" + e.GetY());
    return base.OnTouchEvent(e);
}

IOS

public override void TouchesBegan(NSSet touches, UIEvent evt)
{
    base.TouchesBegan(touches, evt);
    UITouch touch = (UITouch)touches.AnyObject;
    CGPoint cp = touch.LocationInView(this.View);
    Console.WriteLine("x->" + cp.X + "y->" + cp.Y);
}