Win10 64位,python3.5, 用ctypes调用MVCAMSDK_X64.DLL,读取mindvision的摄像头,生成jpg图像,存为numpy数据格式,求完整python代码。以下运行到Cameraplay出错,以下对应C的原形:
typedef int CameraHandle;
原型:
MVSDK_API CameraSdkStatus
CameraSdkInit
(
int iLanguageSel
);
MVSDK_API CameraSdkStatus
CameraInit
(
tSdkCameraDevInfo* pCameraInfo,
int emParamLoadMode,
int emTeam,
CameraHandle* pCameraHandle
);
MVSDK_API CameraSdkStatus
CameraPlay
(
CameraHandle hCamera
);
MVSDK_API CameraSdkStatus
CameraEnumerateDevice
(
tSdkCameraDevInfo *pDSCameraList,
INT *piNums
);
以下为python 代码;
from ctypes import *
import numpy as np
from ctypes.wintypes import *
mylib=cdll.LoadLibrary('C:\Program Files (x86)\MindVision\SDK\X64\MVCAMSDK_X64.DLL')
hand=HANDLE()
i = c_int(1)
t=c_int(-1)
s=c_int(1)
class tSdkCameraDevInfo(Structure):
_fields_ = [('uVendorID', c_uint),
('uProductID', c_uint),
('acVendorName',c_char),
('acProductSeries',c_char),
('acProductName',c_char),
('acFriendlyName',c_char),
('acDevFileName',c_char),
('acFirmwareVersion',c_char),
('acSensorType',c_char),
('acPortType',c_char)]
pi=pointer(i)
ti=pointer(t)
p_i=POINTER(c_int)
p_p_i=p_i(i)
pii=create_string_buffer(2)
piii = create_unicode_buffer(2)
cInfor=tSdkCameraDevInfo()
l=mylib.CameraSdkInit(1)
pp = create_unicode_buffer(4)
j=mylib.CameraEnumerateDevice(byref(cInfor),pi)
mylib.CameraInitEx.argtypes=(c_int,c_int,c_int)
k = mylib.CameraInit(byref(cInfor), -1, -1, byref(hand))
g=mylib.Cameraplay(hand) ####这里出错了
print(l)
print(j)
print(k)
print(hand)