F# 翻转一个2D“文件”;“图像”;它存储在F中的一维数组中#

F# 翻转一个2D“文件”;“图像”;它存储在F中的一维数组中#,f#,kinect,F#,Kinect,我正在与Kinect合作,试图获取深入的数据并对其进行处理 基本上,当我从Kinect处理深度帧时,我想保存2-播放器的前部深度数据和后部深度数据。然后我需要翻转后面的数据,这样就可以用来构建播放器的3D模型 我遇到的问题是将这些数据向后翻转 我有一个长度为1D的数组(320*240=76800)形式的深度数据,我计划翻转每一行(数组中的320个位置)以反转图像 let mutable flipped = Array.create (320*240) 0 for y=0 to 239 do

我正在与Kinect合作,试图获取深入的数据并对其进行处理

基本上,当我从Kinect处理深度帧时,我想保存2-播放器的前部深度数据和后部深度数据。然后我需要翻转后面的数据,这样就可以用来构建播放器的3D模型

我遇到的问题是将这些数据向后翻转

我有一个长度为1D的数组(320*240=76800)形式的深度数据,我计划翻转每一行(数组中的320个位置)以反转图像

let mutable flipped = Array.create (320*240) 0
for y=0 to 239 do
    for x=0 to 319 do
        let n = ((y)* 320 + x)
        flipped.[n] <- depths.[(320*(y+1))-(n+1)]

System.Diagnostics.Debug.WriteLine("DepthsMax:" + Array.max(depths).ToString())
System.Diagnostics.Debug.WriteLine("FlippedMax:" + Array.max(flipped).ToString())
let mutable flipped=Array.create(320*240)0
对于y=0至239 do
对于x=0到319 do
设n=((y)*320+x)

翻转。[n]首先,请注意,
flipped
不需要可变,因为您从未重新分配它(您只需修改它)

这是问题本身。给定
n=320*y+x
,您正在查看索引:

320 * (y+1) - n - 1
= 320 * y + 320 - (320 * y + x) - 1
= 319 - x

因此,您只能从第一行访问数据。您希望访问索引
y*320+(319-x)
320*(y+1)-(x+1)
,而不是
320*(y+1)-(n+1)

首先,请注意,翻转的
不需要是可变的,因为您从不重新分配它(您只修改它)

这是问题本身。给定
n=320*y+x
,您正在查看索引:

320 * (y+1) - n - 1
= 320 * y + 320 - (320 * y + x) - 1
= 319 - x

因此,您只能从第一行访问数据。您希望访问索引
y*320+(319-x)
320*(y+1)-(x+1)
,而不是
320*(y+1)-(n+1)

如果我理解正确,行索引将保持不变,并且每行中的数据都应反转:

for row=0 to 239 do
  for col=0 to 319 do
    flipped.[320*row+col] <- depths.[320*row+319-col]
行=0到239 do的

对于col=0至319 do

翻转。[320*行+列]如果我理解正确,行索引将保持不变,每行中的数据应反转:

for row=0 to 239 do
  for col=0 to 319 do
    flipped.[320*row+col] <- depths.[320*row+319-col]
行=0到239 do的

对于col=0至319 do

翻转。[320*行+列]对于数组,
mutable
使引用可变。元素总是可变的。因此,在这种情况下,这是不必要的。您可以用
Array.zeroCreate
替换
Array.create\u0
。啊,感谢大家提供的提示,他们仍在努力掌握f!非常感谢数组,
mutable
使引用可变。元素总是可变的。因此,在这种情况下,这是不必要的。您可以用
Array.zeroCreate
替换
Array.create\u0
。啊,感谢大家提供的提示,他们仍在努力掌握f!非常有用,非常感谢,非常感谢。我总是认为编程中最难破解的问题(无论如何对我来说)是那些你已经盯着看了好几天的愚蠢错误,让自己相信你看不到错误!谢谢,太好了,非常感谢。我总是认为编程中最难破解的问题(无论如何对我来说)是那些你已经盯着看了好几天的愚蠢错误,让自己相信你看不到错误!谢谢