【发布时间】:2011-05-06 14:50:52
【问题描述】:
我正在尝试在 Python 中实现图像分类算法。问题是python循环遍历数组需要很长时间。这就是为什么我决定编写一个执行数组处理的 Delphi dll。我的问题是我不知道如何将多维 python 数组传递给我的 dll 函数。
Delphi dll提取:(我使用这个函数只是为了测试)
type
TImgArray = array of array of Integer;
function count(a: TImgArray): Integer; cdecl;
begin
result:= high(a);
end;
相关Python代码:
arraydll = cdll.LoadLibrary("C:\\ArrayFunctions.dll")
c_int_p = ctypes.POINTER(ctypes.c_int32)
data = valBD.ReadAsArray()
data = data.astype(np.int32)
data_p = data.ctypes.data_as(c_int_p)
print arraydll.count(data_p)
dll 函数返回的值不正确(它是 2816 而不是 7339)。这就是为什么我猜我的类型转换有问题:( 提前致谢, 马里奥
【问题讨论】:
-
numpy 数据将是单个值数组。形状由其他元数据确定。试图将其直接映射到 Delphi 动态数组注定要失败。我认为在您的位置上,我会考虑使用 Cython,它可以让您以自然的方式使用 numpy 数组。
-
简而言之,我同意大卫的观点,也就是说,用 C 语言编写它。我在回答中对大卫的观点进行了扩展。
标签: python delphi dll multidimensional-array