所以我试图使用ctypes来使用.dll文件中定义的函数来控制相机。我有这样的事情:
import ctypes as C
import numpy as np
memoryid = C.c_int()
memoryaddress = C.c_char_p()
img = np.zeros((dy,dx),dtype=np.uint8)
uc480.is_CopyImageMem(handle,memoryaddress,memoryid,img.ctypes.data)
有时我会在最后一行收到错误ArgumentError: argument 4: <class 'OverflowError'>: int too long to convert
。但这取决于计算机。有时这个错误不会弹出,一切似乎都有效。 (但我刚试过三台不同的电脑,两台有错误,一台没有,所以我不能从中得出很多结论。)
从文档(https://www.thorlabs.com/software/THO/ThorCam/Programming/ITN000563-D02.pdf第159页)中,最后一个函数的第四个参数应该是指向要复制图像的目标内存的指针。是否意味着第四个参数对于Python来说太长了?当我尝试print(img.ctypes.data)
时,我得到类似2813806678080
的内容。这会导致问题吗?有什么想法我应该如何解决这个问题?