使用 FlirOneSDK 获取带有 x 和 y 值的温度
Get temperature with x and y values using FlirOneSDK
要获取特定点的温度,您需要 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;
}
}
我不知道这是不是最好的方法,但这是我找到的方法。
谢谢。
好的,这需要 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);
}
要获取特定点的温度,您需要 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;
}
}
我不知道这是不是最好的方法,但这是我找到的方法。
谢谢。
好的,这需要 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);
}