有可能给C中的数组索引给定三个值吗



我正在尝试从python中的png图像生成三维模型(.stl文件(。在python中,我实现了生成三维模型的目标。但它相当缓慢。例如,300-400个图像的图像序列花费大约400秒来生成stl。我尝试过线程和多处理,但它似乎对我来说不起作用。所以我决定在C语言中用ctypes和CDLL做得更快一点。

在python中,我使用numpy数组来恢复坐标数据。numpy数组的每个索引都是这样的。[1000,800,50]每个元素是x、y和z值。

我试着用C语言制作它,但我不能给一个索引三个值。它只给出了最后一个值。

#include <stdio.h>
void try(int rows, int columns)
{
int row, column, z;
int vertices[rows][columns];
for(row = 1; row <= rows; row++)
{
for(column = 1; column <= columns; column++)
{
z = 50;
vertices[row][column] = (row,column,z);
printf("%d ", vertices[row][column]);
}

}

}

这是我使用的代码。我不知道是不是语法问题。但我想不出一个解决办法。

输出应该与上面类似。[1000,800,50]...但是它只在终端中提示50。

那么,有可能在C中的数组的每个索引中保持3个值吗?所以我可以用C处理图像像素值,并将其返回到Python。

正如其他人所说,使用一个struct实例数组可以同时存储三个(或更多(数据位。

根据您想要存储的数据的值,您可以将这些位"打包"到一个标准的C数据类型中(然后在需要时"解压缩"(。

以下是一个数据值范围为0-1023(10位(的示例。

// Uses 30 of 32bit wide 'int' datatype.
vertices[row][col] = row << 20 | col < 10 | z;

如果你知道"z"在一个小范围内,你可以为row和/或col使用更多的比特