Я использую kinect, чтобы сделать несколько вещей в F #, но у меня возникли небольшие проблемы при работе с данными глубины.Я следовал этому уроку: http://digitalerr0r.wordpress.com/2011/06/21/kinect-fundamentals-3-getting-data-from-the-depth-sensor/
с примерами c #, которые я пытался преобразовать в F #.
Эта часть кода проблематична:
void kinectSensor_DepthFrameReady(object sender, ImageFrameReadyEventArgs e)
{
PlanarImage p = e.ImageFrame.Image;
Color[] DepthColor = new Color[p.Height * p.Width];
float maxDist = 4000;
float minDist = 850;
float distOffset = maxDist – minDist;
kinectDepthVideo = new Texture2D(GraphicsDevice, p.Width, p.Height);
int index = 0;
for (int y = 0; y < p.Height; y++)
{
for (int x = 0; x < p.Width; x++, index += 2)
{
int n = (y * p.Width + x) * 2;
int distance = (p.Bits[n + 0] | p.Bits[n + 1] << 8);
byte intensity = (byte)(255 – (255 * Math.Max(distance – minDist, 0) / (distOffset)));
DepthColor[y * p.Width + x] = new Color(intensity, intensity, intensity);
}
}
}
Проблема, с которой я сталкиваюсь, выглядит следующим образом: int distance = (p.Bits[n + 0] | p.Bits[n + 1] << 8);
в F # его должно стать let distance = (p.Bits.[n+0] ||| p.Bits.[n+1] <<< 8)
это означает, что через определение типа это расстояние имеет тип "байт ", который я затем приведу к int, как это: let distance = int(p.Bits.[n+0] ||| p.Bits.[n+1] <<< 8)
.это правильный способ конвертировать немного в int?Правильны ли мои побитовые операции?Поскольку я сам изучал F # с нуля, я не уверен, но это не приводит к ошибкам синтаксиса.
Тем не менее, это означает, что все мои измерения глубины выходят как 0. Если у меня есть это как байт, они немного более чувствительны, но они не работают со следующей строкой (это в c #, но у меня естьего версия F # ... делает то же самое!) byte intensity = (byte)(255 – (255 * Math.Max(distance – minDist, 0) / (distOffset)));
По сути, я не могу заставить его делать что-либо, кроме как дать мне 255 за каждую выходную интенсивность.
Любая помощь будетБуду очень признателен и извиняюсь за неясные вещи, которые я пытаюсь сделать!Вероятно, следует просто использовать C #!
Спасибо