Ctypes从指针获取数组(Mightex相机框架抓取)

时间:2016-12-13 08:37:55

标签: python c dll ctypes

我需要从指针地址获取USB相机帧(int数组0-255值)

根据相机功能:

byte *BUFUSB_GetCurrentFrame(int deviceID, int FrameType, byte * &FramePtr );

我需要传递int deviceIDint FrameType和帧大小的指针(大小应该用Python编写)

该函数将返回地址指针,我需要从地址+帧大小读取帧。

帧大小为1280 * 1024 +56字节= 1310776 我写的功能:

def GetCurrentFrame(deviceID,FrameType):
    Open=mightex.BUFUSB_GetCurrentFrame
    Open.argtypes =[ctypes.c_int32,ctypes.c_int32,ctypes.POINTER(ctypes.c_byte)]
    Open.restype = ctypes.POINTER(ctypes.c_byte)
    Data=ctypes.c_byte(1310776)
    array_pointer= Open(deviceID,FrameType,ctypes.byref(Data))
    data_pointer = ctypes.cast(array_pointer,ctypes.POINTER(ctypes.c_int*1310776))
    print np.frombuffer(data_pointer.contents)

来自头文件:

#define SDK_POINTER_API extern "C" __declspec(dllimport) unsigned char * _cdecl
SDK_POINTER_API BUFUSB_GetCurrentFrame( int FrameType, int deviceID, byte* &FramePtr );

根据相机制造商的说法: 它返回一个指针作为函数的返回值,它的第三个参数返回一个包含以下内容的内存块:

也许我应该传递内存块大小的内存块?

我的功能出了问题,它不起作用请协助

0 个答案:

没有答案