Files
hirres_tractor_vision/lib/camera/mvsdk.py
2025-05-30 16:30:37 +08:00

2395 lines
89 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#coding=utf-8
import platform
from ctypes import *
from threading import local
# 回调函数类型
CALLBACK_FUNC_TYPE = None
# SDK动态库
_sdk = None
def _Init():
global _sdk
global CALLBACK_FUNC_TYPE
is_win = (platform.system() == "Windows")
is_x86 = (platform.architecture()[0] == '32bit')
if is_win:
_sdk = windll.MVCAMSDK if is_x86 else windll.MVCAMSDK_X64
CALLBACK_FUNC_TYPE = WINFUNCTYPE
else:
_sdk = cdll.LoadLibrary("libMVSDK.so")
CALLBACK_FUNC_TYPE = CFUNCTYPE
_Init()
#-------------------------------------------类型定义--------------------------------------------------
# 状态码定义
CAMERA_STATUS_SUCCESS = 0 # 操作成功
CAMERA_STATUS_FAILED = -1 # 操作失败
CAMERA_STATUS_INTERNAL_ERROR = -2 # 内部错误
CAMERA_STATUS_UNKNOW = -3 # 未知错误
CAMERA_STATUS_NOT_SUPPORTED = -4 # 不支持该功能
CAMERA_STATUS_NOT_INITIALIZED = -5 # 初始化未完成
CAMERA_STATUS_PARAMETER_INVALID = -6 # 参数无效
CAMERA_STATUS_PARAMETER_OUT_OF_BOUND = -7 # 参数越界
CAMERA_STATUS_UNENABLED = -8 # 未使能
CAMERA_STATUS_USER_CANCEL = -9 # 用户手动取消了比如roi面板点击取消返回
CAMERA_STATUS_PATH_NOT_FOUND = -10 # 注册表中没有找到对应的路径
CAMERA_STATUS_SIZE_DISMATCH = -11 # 获得图像数据长度和定义的尺寸不匹配
CAMERA_STATUS_TIME_OUT = -12 # 超时错误
CAMERA_STATUS_IO_ERROR = -13 # 硬件IO错误
CAMERA_STATUS_COMM_ERROR = -14 # 通讯错误
CAMERA_STATUS_BUS_ERROR = -15 # 总线错误
CAMERA_STATUS_NO_DEVICE_FOUND = -16 # 没有发现设备
CAMERA_STATUS_NO_LOGIC_DEVICE_FOUND = -17 # 未找到逻辑设备
CAMERA_STATUS_DEVICE_IS_OPENED = -18 # 设备已经打开
CAMERA_STATUS_DEVICE_IS_CLOSED = -19 # 设备已经关闭
CAMERA_STATUS_DEVICE_VEDIO_CLOSED = -20 # 没有打开设备视频,调用录像相关的函数时,如果相机视频没有打开,则回返回该错误。
CAMERA_STATUS_NO_MEMORY = -21 # 没有足够系统内存
CAMERA_STATUS_FILE_CREATE_FAILED = -22 # 创建文件失败
CAMERA_STATUS_FILE_INVALID = -23 # 文件格式无效
CAMERA_STATUS_WRITE_PROTECTED = -24 # 写保护,不可写
CAMERA_STATUS_GRAB_FAILED = -25 # 数据采集失败
CAMERA_STATUS_LOST_DATA = -26 # 数据丢失,不完整
CAMERA_STATUS_EOF_ERROR = -27 # 未接收到帧结束符
CAMERA_STATUS_BUSY = -28 # 正忙(上一次操作还在进行中),此次操作不能进行
CAMERA_STATUS_WAIT = -29 # 需要等待(进行操作的条件不成立),可以再次尝试
CAMERA_STATUS_IN_PROCESS = -30 # 正在进行,已经被操作过
CAMERA_STATUS_IIC_ERROR = -31 # IIC传输错误
CAMERA_STATUS_SPI_ERROR = -32 # SPI传输错误
CAMERA_STATUS_USB_CONTROL_ERROR = -33 # USB控制传输错误
CAMERA_STATUS_USB_BULK_ERROR = -34 # USB BULK传输错误
CAMERA_STATUS_SOCKET_INIT_ERROR = -35 # 网络传输套件初始化失败
CAMERA_STATUS_GIGE_FILTER_INIT_ERROR = -36 # 网络相机内核过滤驱动初始化失败,请检查是否正确安装了驱动,或者重新安装。
CAMERA_STATUS_NET_SEND_ERROR = -37 # 网络数据发送错误
CAMERA_STATUS_DEVICE_LOST = -38 # 与网络相机失去连接,心跳检测超时
CAMERA_STATUS_DATA_RECV_LESS = -39 # 接收到的字节数比请求的少
CAMERA_STATUS_FUNCTION_LOAD_FAILED = -40 # 从文件中加载程序失败
CAMERA_STATUS_CRITICAL_FILE_LOST = -41 # 程序运行所必须的文件丢失。
CAMERA_STATUS_SENSOR_ID_DISMATCH = -42 # 固件和程序不匹配,原因是下载了错误的固件。
CAMERA_STATUS_OUT_OF_RANGE = -43 # 参数超出有效范围。
CAMERA_STATUS_REGISTRY_ERROR = -44 # 安装程序注册错误。请重新安装程序或者运行安装目录Setup/Installer.exe
CAMERA_STATUS_ACCESS_DENY = -45 # 禁止访问。指定相机已经被其他程序占用时,再申请访问该相机,会返回该状态。(一个相机不能被多个程序同时访问)
#AIA的标准兼容的错误码
CAMERA_AIA_PACKET_RESEND = 0x0100 #该帧需要重传
CAMERA_AIA_NOT_IMPLEMENTED = 0x8001 #设备不支持的命令
CAMERA_AIA_INVALID_PARAMETER = 0x8002 #命令参数非法
CAMERA_AIA_INVALID_ADDRESS = 0x8003 #不可访问的地址
CAMERA_AIA_WRITE_PROTECT = 0x8004 #访问的对象不可写
CAMERA_AIA_BAD_ALIGNMENT = 0x8005 #访问的地址没有按照要求对齐
CAMERA_AIA_ACCESS_DENIED = 0x8006 #没有访问权限
CAMERA_AIA_BUSY = 0x8007 #命令正在处理中
CAMERA_AIA_DEPRECATED = 0x8008 #0x8008-0x0800B 0x800F 该指令已经废弃
CAMERA_AIA_PACKET_UNAVAILABLE = 0x800C #包无效
CAMERA_AIA_DATA_OVERRUN = 0x800D #数据溢出,通常是收到的数据比需要的多
CAMERA_AIA_INVALID_HEADER = 0x800E #数据包头部中某些区域与协议不匹配
CAMERA_AIA_PACKET_NOT_YET_AVAILABLE = 0x8010 #图像分包数据还未准备好,多用于触发模式,应用程序访问超时
CAMERA_AIA_PACKET_AND_PREV_REMOVED_FROM_MEMORY = 0x8011 #需要访问的分包已经不存在。多用于重传时数据已经不在缓冲区中
CAMERA_AIA_PACKET_REMOVED_FROM_MEMORY = 0x8012 #CAMERA_AIA_PACKET_AND_PREV_REMOVED_FROM_MEMORY
CAMERA_AIA_NO_REF_TIME = 0x0813 #没有参考时钟源。多用于时间同步的命令执行时
CAMERA_AIA_PACKET_TEMPORARILY_UNAVAILABLE = 0x0814 #由于信道带宽问题,当前分包暂时不可用,需稍后进行访问
CAMERA_AIA_OVERFLOW = 0x0815 #设备端数据溢出,通常是队列已满
CAMERA_AIA_ACTION_LATE = 0x0816 #命令执行已经超过有效的指定时间
CAMERA_AIA_ERROR = 0x8FFF #错误
# 图像格式定义
CAMERA_MEDIA_TYPE_MONO = 0x01000000
CAMERA_MEDIA_TYPE_RGB = 0x02000000
CAMERA_MEDIA_TYPE_COLOR = 0x02000000
CAMERA_MEDIA_TYPE_OCCUPY1BIT = 0x00010000
CAMERA_MEDIA_TYPE_OCCUPY2BIT = 0x00020000
CAMERA_MEDIA_TYPE_OCCUPY4BIT = 0x00040000
CAMERA_MEDIA_TYPE_OCCUPY8BIT = 0x00080000
CAMERA_MEDIA_TYPE_OCCUPY10BIT = 0x000A0000
CAMERA_MEDIA_TYPE_OCCUPY12BIT = 0x000C0000
CAMERA_MEDIA_TYPE_OCCUPY16BIT = 0x00100000
CAMERA_MEDIA_TYPE_OCCUPY24BIT = 0x00180000
CAMERA_MEDIA_TYPE_OCCUPY32BIT = 0x00200000
CAMERA_MEDIA_TYPE_OCCUPY36BIT = 0x00240000
CAMERA_MEDIA_TYPE_OCCUPY48BIT = 0x00300000
CAMERA_MEDIA_TYPE_EFFECTIVE_PIXEL_SIZE_MASK = 0x00FF0000
CAMERA_MEDIA_TYPE_EFFECTIVE_PIXEL_SIZE_SHIFT = 16
CAMERA_MEDIA_TYPE_ID_MASK = 0x0000FFFF
CAMERA_MEDIA_TYPE_COUNT = 0x46
#mono
CAMERA_MEDIA_TYPE_MONO1P = (CAMERA_MEDIA_TYPE_MONO | CAMERA_MEDIA_TYPE_OCCUPY1BIT | 0x0037)
CAMERA_MEDIA_TYPE_MONO2P = (CAMERA_MEDIA_TYPE_MONO | CAMERA_MEDIA_TYPE_OCCUPY2BIT | 0x0038)
CAMERA_MEDIA_TYPE_MONO4P = (CAMERA_MEDIA_TYPE_MONO | CAMERA_MEDIA_TYPE_OCCUPY4BIT | 0x0039)
CAMERA_MEDIA_TYPE_MONO8 = (CAMERA_MEDIA_TYPE_MONO | CAMERA_MEDIA_TYPE_OCCUPY8BIT | 0x0001)
CAMERA_MEDIA_TYPE_MONO8S = (CAMERA_MEDIA_TYPE_MONO | CAMERA_MEDIA_TYPE_OCCUPY8BIT | 0x0002)
CAMERA_MEDIA_TYPE_MONO10 = (CAMERA_MEDIA_TYPE_MONO | CAMERA_MEDIA_TYPE_OCCUPY16BIT | 0x0003)
CAMERA_MEDIA_TYPE_MONO10_PACKED = (CAMERA_MEDIA_TYPE_MONO | CAMERA_MEDIA_TYPE_OCCUPY12BIT | 0x0004)
CAMERA_MEDIA_TYPE_MONO12 = (CAMERA_MEDIA_TYPE_MONO | CAMERA_MEDIA_TYPE_OCCUPY16BIT | 0x0005)
CAMERA_MEDIA_TYPE_MONO12_PACKED = (CAMERA_MEDIA_TYPE_MONO | CAMERA_MEDIA_TYPE_OCCUPY12BIT | 0x0006)
CAMERA_MEDIA_TYPE_MONO14 = (CAMERA_MEDIA_TYPE_MONO | CAMERA_MEDIA_TYPE_OCCUPY16BIT | 0x0025)
CAMERA_MEDIA_TYPE_MONO16 = (CAMERA_MEDIA_TYPE_MONO | CAMERA_MEDIA_TYPE_OCCUPY16BIT | 0x0007)
# Bayer
CAMERA_MEDIA_TYPE_BAYGR8 = (CAMERA_MEDIA_TYPE_MONO | CAMERA_MEDIA_TYPE_OCCUPY8BIT | 0x0008)
CAMERA_MEDIA_TYPE_BAYRG8 = (CAMERA_MEDIA_TYPE_MONO | CAMERA_MEDIA_TYPE_OCCUPY8BIT | 0x0009)
CAMERA_MEDIA_TYPE_BAYGB8 = (CAMERA_MEDIA_TYPE_MONO | CAMERA_MEDIA_TYPE_OCCUPY8BIT | 0x000A)
CAMERA_MEDIA_TYPE_BAYBG8 = (CAMERA_MEDIA_TYPE_MONO | CAMERA_MEDIA_TYPE_OCCUPY8BIT | 0x000B)
CAMERA_MEDIA_TYPE_BAYGR10_MIPI = (CAMERA_MEDIA_TYPE_MONO | CAMERA_MEDIA_TYPE_OCCUPY10BIT | 0x0026)
CAMERA_MEDIA_TYPE_BAYRG10_MIPI = (CAMERA_MEDIA_TYPE_MONO | CAMERA_MEDIA_TYPE_OCCUPY10BIT | 0x0027)
CAMERA_MEDIA_TYPE_BAYGB10_MIPI = (CAMERA_MEDIA_TYPE_MONO | CAMERA_MEDIA_TYPE_OCCUPY10BIT | 0x0028)
CAMERA_MEDIA_TYPE_BAYBG10_MIPI = (CAMERA_MEDIA_TYPE_MONO | CAMERA_MEDIA_TYPE_OCCUPY10BIT | 0x0029)
CAMERA_MEDIA_TYPE_BAYGR10 = (CAMERA_MEDIA_TYPE_MONO | CAMERA_MEDIA_TYPE_OCCUPY16BIT | 0x000C)
CAMERA_MEDIA_TYPE_BAYRG10 = (CAMERA_MEDIA_TYPE_MONO | CAMERA_MEDIA_TYPE_OCCUPY16BIT | 0x000D)
CAMERA_MEDIA_TYPE_BAYGB10 = (CAMERA_MEDIA_TYPE_MONO | CAMERA_MEDIA_TYPE_OCCUPY16BIT | 0x000E)
CAMERA_MEDIA_TYPE_BAYBG10 = (CAMERA_MEDIA_TYPE_MONO | CAMERA_MEDIA_TYPE_OCCUPY16BIT | 0x000F)
CAMERA_MEDIA_TYPE_BAYGR12 = (CAMERA_MEDIA_TYPE_MONO | CAMERA_MEDIA_TYPE_OCCUPY16BIT | 0x0010)
CAMERA_MEDIA_TYPE_BAYRG12 = (CAMERA_MEDIA_TYPE_MONO | CAMERA_MEDIA_TYPE_OCCUPY16BIT | 0x0011)
CAMERA_MEDIA_TYPE_BAYGB12 = (CAMERA_MEDIA_TYPE_MONO | CAMERA_MEDIA_TYPE_OCCUPY16BIT | 0x0012)
CAMERA_MEDIA_TYPE_BAYBG12 = (CAMERA_MEDIA_TYPE_MONO | CAMERA_MEDIA_TYPE_OCCUPY16BIT | 0x0013)
CAMERA_MEDIA_TYPE_BAYGR10_PACKED = (CAMERA_MEDIA_TYPE_MONO | CAMERA_MEDIA_TYPE_OCCUPY12BIT | 0x0026)
CAMERA_MEDIA_TYPE_BAYRG10_PACKED = (CAMERA_MEDIA_TYPE_MONO | CAMERA_MEDIA_TYPE_OCCUPY12BIT | 0x0027)
CAMERA_MEDIA_TYPE_BAYGB10_PACKED = (CAMERA_MEDIA_TYPE_MONO | CAMERA_MEDIA_TYPE_OCCUPY12BIT | 0x0028)
CAMERA_MEDIA_TYPE_BAYBG10_PACKED = (CAMERA_MEDIA_TYPE_MONO | CAMERA_MEDIA_TYPE_OCCUPY12BIT | 0x0029)
CAMERA_MEDIA_TYPE_BAYGR12_PACKED = (CAMERA_MEDIA_TYPE_MONO | CAMERA_MEDIA_TYPE_OCCUPY12BIT | 0x002A)
CAMERA_MEDIA_TYPE_BAYRG12_PACKED = (CAMERA_MEDIA_TYPE_MONO | CAMERA_MEDIA_TYPE_OCCUPY12BIT | 0x002B)
CAMERA_MEDIA_TYPE_BAYGB12_PACKED = (CAMERA_MEDIA_TYPE_MONO | CAMERA_MEDIA_TYPE_OCCUPY12BIT | 0x002C)
CAMERA_MEDIA_TYPE_BAYBG12_PACKED = (CAMERA_MEDIA_TYPE_MONO | CAMERA_MEDIA_TYPE_OCCUPY12BIT | 0x002D)
CAMERA_MEDIA_TYPE_BAYGR16 = (CAMERA_MEDIA_TYPE_MONO | CAMERA_MEDIA_TYPE_OCCUPY16BIT | 0x002E)
CAMERA_MEDIA_TYPE_BAYRG16 = (CAMERA_MEDIA_TYPE_MONO | CAMERA_MEDIA_TYPE_OCCUPY16BIT | 0x002F)
CAMERA_MEDIA_TYPE_BAYGB16 = (CAMERA_MEDIA_TYPE_MONO | CAMERA_MEDIA_TYPE_OCCUPY16BIT | 0x0030)
CAMERA_MEDIA_TYPE_BAYBG16 = (CAMERA_MEDIA_TYPE_MONO | CAMERA_MEDIA_TYPE_OCCUPY16BIT | 0x0031)
# RGB
CAMERA_MEDIA_TYPE_RGB8 = (CAMERA_MEDIA_TYPE_COLOR | CAMERA_MEDIA_TYPE_OCCUPY24BIT | 0x0014)
CAMERA_MEDIA_TYPE_BGR8 = (CAMERA_MEDIA_TYPE_COLOR | CAMERA_MEDIA_TYPE_OCCUPY24BIT | 0x0015)
CAMERA_MEDIA_TYPE_RGBA8 = (CAMERA_MEDIA_TYPE_COLOR | CAMERA_MEDIA_TYPE_OCCUPY32BIT | 0x0016)
CAMERA_MEDIA_TYPE_BGRA8 = (CAMERA_MEDIA_TYPE_COLOR | CAMERA_MEDIA_TYPE_OCCUPY32BIT | 0x0017)
CAMERA_MEDIA_TYPE_RGB10 = (CAMERA_MEDIA_TYPE_COLOR | CAMERA_MEDIA_TYPE_OCCUPY48BIT | 0x0018)
CAMERA_MEDIA_TYPE_BGR10 = (CAMERA_MEDIA_TYPE_COLOR | CAMERA_MEDIA_TYPE_OCCUPY48BIT | 0x0019)
CAMERA_MEDIA_TYPE_RGB12 = (CAMERA_MEDIA_TYPE_COLOR | CAMERA_MEDIA_TYPE_OCCUPY48BIT | 0x001A)
CAMERA_MEDIA_TYPE_BGR12 = (CAMERA_MEDIA_TYPE_COLOR | CAMERA_MEDIA_TYPE_OCCUPY48BIT | 0x001B)
CAMERA_MEDIA_TYPE_RGB16 = (CAMERA_MEDIA_TYPE_COLOR | CAMERA_MEDIA_TYPE_OCCUPY48BIT | 0x0033)
CAMERA_MEDIA_TYPE_RGB10V1_PACKED = (CAMERA_MEDIA_TYPE_COLOR | CAMERA_MEDIA_TYPE_OCCUPY32BIT | 0x001C)
CAMERA_MEDIA_TYPE_RGB10P32 = (CAMERA_MEDIA_TYPE_COLOR | CAMERA_MEDIA_TYPE_OCCUPY32BIT | 0x001D)
CAMERA_MEDIA_TYPE_RGB12V1_PACKED = (CAMERA_MEDIA_TYPE_COLOR | CAMERA_MEDIA_TYPE_OCCUPY36BIT | 0X0034)
CAMERA_MEDIA_TYPE_RGB565P = (CAMERA_MEDIA_TYPE_COLOR | CAMERA_MEDIA_TYPE_OCCUPY16BIT | 0x0035)
CAMERA_MEDIA_TYPE_BGR565P = (CAMERA_MEDIA_TYPE_COLOR | CAMERA_MEDIA_TYPE_OCCUPY16BIT | 0X0036)
# YUV and YCbCr
CAMERA_MEDIA_TYPE_YUV411_8_UYYVYY = (CAMERA_MEDIA_TYPE_COLOR | CAMERA_MEDIA_TYPE_OCCUPY12BIT | 0x001E)
CAMERA_MEDIA_TYPE_YUV422_8_UYVY = (CAMERA_MEDIA_TYPE_COLOR | CAMERA_MEDIA_TYPE_OCCUPY16BIT | 0x001F)
CAMERA_MEDIA_TYPE_YUV422_8 = (CAMERA_MEDIA_TYPE_COLOR | CAMERA_MEDIA_TYPE_OCCUPY16BIT | 0x0032)
CAMERA_MEDIA_TYPE_YUV8_UYV = (CAMERA_MEDIA_TYPE_COLOR | CAMERA_MEDIA_TYPE_OCCUPY24BIT | 0x0020)
CAMERA_MEDIA_TYPE_YCBCR8_CBYCR = (CAMERA_MEDIA_TYPE_COLOR | CAMERA_MEDIA_TYPE_OCCUPY24BIT | 0x003A)
#CAMERA_MEDIA_TYPE_YCBCR422_8 : YYYYCbCrCbCr
CAMERA_MEDIA_TYPE_YCBCR422_8 = (CAMERA_MEDIA_TYPE_COLOR | CAMERA_MEDIA_TYPE_OCCUPY16BIT | 0x003B)
CAMERA_MEDIA_TYPE_YCBCR422_8_CBYCRY = (CAMERA_MEDIA_TYPE_COLOR | CAMERA_MEDIA_TYPE_OCCUPY16BIT | 0x0043)
CAMERA_MEDIA_TYPE_YCBCR411_8_CBYYCRYY = (CAMERA_MEDIA_TYPE_COLOR | CAMERA_MEDIA_TYPE_OCCUPY12BIT | 0x003C)
CAMERA_MEDIA_TYPE_YCBCR601_8_CBYCR = (CAMERA_MEDIA_TYPE_COLOR | CAMERA_MEDIA_TYPE_OCCUPY24BIT | 0x003D)
CAMERA_MEDIA_TYPE_YCBCR601_422_8 = (CAMERA_MEDIA_TYPE_COLOR | CAMERA_MEDIA_TYPE_OCCUPY16BIT | 0x003E)
CAMERA_MEDIA_TYPE_YCBCR601_422_8_CBYCRY = (CAMERA_MEDIA_TYPE_COLOR | CAMERA_MEDIA_TYPE_OCCUPY16BIT | 0x0044)
CAMERA_MEDIA_TYPE_YCBCR601_411_8_CBYYCRYY = (CAMERA_MEDIA_TYPE_COLOR | CAMERA_MEDIA_TYPE_OCCUPY12BIT | 0x003F)
CAMERA_MEDIA_TYPE_YCBCR709_8_CBYCR = (CAMERA_MEDIA_TYPE_COLOR | CAMERA_MEDIA_TYPE_OCCUPY24BIT | 0x0040)
CAMERA_MEDIA_TYPE_YCBCR709_422_8 = (CAMERA_MEDIA_TYPE_COLOR | CAMERA_MEDIA_TYPE_OCCUPY16BIT | 0x0041)
CAMERA_MEDIA_TYPE_YCBCR709_422_8_CBYCRY = (CAMERA_MEDIA_TYPE_COLOR | CAMERA_MEDIA_TYPE_OCCUPY16BIT | 0x0045)
CAMERA_MEDIA_TYPE_YCBCR709_411_8_CBYYCRYY = (CAMERA_MEDIA_TYPE_COLOR | CAMERA_MEDIA_TYPE_OCCUPY12BIT | 0x0042)
# RGB Planar
CAMERA_MEDIA_TYPE_RGB8_PLANAR = (CAMERA_MEDIA_TYPE_COLOR | CAMERA_MEDIA_TYPE_OCCUPY24BIT | 0x0021)
CAMERA_MEDIA_TYPE_RGB10_PLANAR = (CAMERA_MEDIA_TYPE_COLOR | CAMERA_MEDIA_TYPE_OCCUPY48BIT | 0x0022)
CAMERA_MEDIA_TYPE_RGB12_PLANAR = (CAMERA_MEDIA_TYPE_COLOR | CAMERA_MEDIA_TYPE_OCCUPY48BIT | 0x0023)
CAMERA_MEDIA_TYPE_RGB16_PLANAR = (CAMERA_MEDIA_TYPE_COLOR | CAMERA_MEDIA_TYPE_OCCUPY48BIT | 0x0024)
# 保存格式
FILE_JPG = 1
FILE_BMP = 2
FILE_RAW = 4
FILE_PNG = 8
FILE_BMP_8BIT = 16
FILE_PNG_8BIT = 32
FILE_RAW_16BIT = 64
# 触发信号
EXT_TRIG_LEADING_EDGE = 0
EXT_TRIG_TRAILING_EDGE = 1
EXT_TRIG_HIGH_LEVEL = 2
EXT_TRIG_LOW_LEVEL = 3
EXT_TRIG_DOUBLE_EDGE = 4
# IO模式
IOMODE_TRIG_INPUT = 0
IOMODE_STROBE_OUTPUT = 1
IOMODE_GP_INPUT = 2
IOMODE_GP_OUTPUT = 3
IOMODE_PWM_OUTPUT = 4
# 相机操作异常信息
class CameraException(Exception):
"""docstring for CameraException"""
def __init__(self, error_code):
super(CameraException, self).__init__()
self.error_code = error_code
self.message = CameraGetErrorString(error_code)
def __str__(self):
return 'error_code:{} message:{}'.format(self.error_code, self.message)
class MvStructure(Structure):
def __str__(self):
strs = []
for field in self._fields_:
name = field[0]
value = getattr(self, name)
if isinstance(value, type(b'')):
value = _string_buffer_to_str(value)
strs.append("{}:{}".format(name, value))
return '\n'.join(strs)
def __repr__(self):
return self.__str__()
def clone(self):
obj = type(self)()
memmove(byref(obj), byref(self), sizeof(self))
return obj
# 相机的设备信息,只读信息,请勿修改
class tSdkCameraDevInfo(MvStructure):
_fields_ = [("acProductSeries", c_char * 32), #产品系列
("acProductName", c_char * 32), #产品名称
("acFriendlyName", c_char * 32), #产品昵称
("acLinkName", c_char * 32), #内核符号连接名,内部使用
("acDriverVersion", c_char * 32), #驱动版本
("acSensorType", c_char * 32), #sensor类型
("acPortType", c_char * 32), #接口类型
("acSn", c_char * 32), #产品唯一序列号
("uInstance", c_uint)] #该型号相机在该电脑上的实例索引号,用于区分同型号多相机
def GetProductSeries(self):
return _string_buffer_to_str(self.acProductSeries)
def GetProductName(self):
return _string_buffer_to_str(self.acProductName)
def GetFriendlyName(self):
return _string_buffer_to_str(self.acFriendlyName)
def GetLinkName(self):
return _string_buffer_to_str(self.acLinkName)
def GetDriverVersion(self):
return _string_buffer_to_str(self.acDriverVersion)
def GetSensorType(self):
return _string_buffer_to_str(self.acSensorType)
def GetPortType(self):
return _string_buffer_to_str(self.acPortType)
def GetSn(self):
return _string_buffer_to_str(self.acSn)
# 相机的分辨率设定范围
class tSdkResolutionRange(MvStructure):
_fields_ = [("iHeightMax", c_int), #图像最大高度
("iHeightMin", c_int), #图像最小高度
("iWidthMax", c_int), #图像最大宽度
("iWidthMin", c_int), #图像最小宽度
("uSkipModeMask", c_uint), #SKIP模式掩码为0表示不支持SKIP 。bit0为1,表示支持SKIP 2x2 bit1为1表示支持SKIP 3x3....
("uBinSumModeMask", c_uint), #BIN(求和)模式掩码为0表示不支持BIN 。bit0为1,表示支持BIN 2x2 bit1为1表示支持BIN 3x3....
("uBinAverageModeMask", c_uint),#BIN(求均值)模式掩码为0表示不支持BIN 。bit0为1,表示支持BIN 2x2 bit1为1表示支持BIN 3x3....
("uResampleMask", c_uint)] #硬件重采样的掩码
#相机的分辨率描述
class tSdkImageResolution(MvStructure):
_fields_ = [
("iIndex", c_int), # 索引号,[0,N]表示预设的分辨率(N 为预设分辨率的最大个数一般不超过20),OXFF 表示自定义分辨率(ROI)
("acDescription", c_char * 32), # 该分辨率的描述信息。仅预设分辨率时该信息有效。自定义分辨率可忽略该信息
("uBinSumMode", c_uint), # BIN(求和)的模式,范围不能超过tSdkResolutionRange中uBinSumModeMask
("uBinAverageMode", c_uint), # BIN(求均值)的模式,范围不能超过tSdkResolutionRange中uBinAverageModeMask
("uSkipMode", c_uint), # 是否SKIP的尺寸为0表示禁止SKIP模式范围不能超过tSdkResolutionRange中uSkipModeMask
("uResampleMask", c_uint), # 硬件重采样的掩码
("iHOffsetFOV", c_int), # 采集视场相对于Sensor最大视场左上角的垂直偏移
("iVOffsetFOV", c_int), # 采集视场相对于Sensor最大视场左上角的水平偏移
("iWidthFOV", c_int), # 采集视场的宽度
("iHeightFOV", c_int), # 采集视场的高度
("iWidth", c_int), # 相机最终输出的图像的宽度
("iHeight", c_int), # 相机最终输出的图像的高度
("iWidthZoomHd", c_int), # 硬件缩放的宽度,不需要进行此操作的分辨率此变量设置为0.
("iHeightZoomHd", c_int), # 硬件缩放的高度,不需要进行此操作的分辨率此变量设置为0.
("iWidthZoomSw", c_int), # 软件缩放的宽度,不需要进行此操作的分辨率此变量设置为0.
("iHeightZoomSw", c_int), # 软件缩放的高度,不需要进行此操作的分辨率此变量设置为0.
]
def GetDescription(self):
return _string_buffer_to_str(self.acDescription)
#相机白平衡模式描述信息
class tSdkColorTemperatureDes(MvStructure):
_fields_ = [
("iIndex", c_int), # 模式索引号
("acDescription", c_char * 32), # 描述信息
]
def GetDescription(self):
return _string_buffer_to_str(self.acDescription)
#相机帧率描述信息
class tSdkFrameSpeed(MvStructure):
_fields_ = [
("iIndex", c_int), # 帧率索引号一般0对应于低速模式1对应于普通模式2对应于高速模式
("acDescription", c_char * 32), # 描述信息
]
def GetDescription(self):
return _string_buffer_to_str(self.acDescription)
#相机曝光功能范围定义
class tSdkExpose(MvStructure):
_fields_ = [
("uiTargetMin", c_uint), #自动曝光亮度目标最小值
("uiTargetMax", c_uint), #自动曝光亮度目标最大值
("uiAnalogGainMin", c_uint), #模拟增益的最小值单位为fAnalogGainStep中定义
("uiAnalogGainMax", c_uint), #模拟增益的最大值单位为fAnalogGainStep中定义
("fAnalogGainStep", c_float), #模拟增益每增加1对应的增加的放大倍数。例如uiAnalogGainMin一般为16fAnalogGainStep一般为0.125那么最小放大倍数就是16*0.125 = 2倍
("uiExposeTimeMin", c_uint), #手动模式下,曝光时间的最小值,单位:行。根据CameraGetExposureLineTime可以获得一行对应的时间(微秒),从而得到整帧的曝光时间
("uiExposeTimeMax", c_uint), #手动模式下,曝光时间的最大值,单位:行
]
#触发模式描述
class tSdkTrigger(MvStructure):
_fields_ = [
("iIndex", c_int), # 模式索引号
("acDescription", c_char * 32), # 描述信息
]
def GetDescription(self):
return _string_buffer_to_str(self.acDescription)
#传输分包大小描述(主要是针对网络相机有效)
class tSdkPackLength(MvStructure):
_fields_ = [
("iIndex", c_int), # 模式索引号
("acDescription", c_char * 32), # 描述信息
("iPackSize", c_uint),
]
def GetDescription(self):
return _string_buffer_to_str(self.acDescription)
#预设的LUT表描述
class tSdkPresetLut(MvStructure):
_fields_ = [
("iIndex", c_int), # 编号
("acDescription", c_char * 32), # 描述信息
]
def GetDescription(self):
return _string_buffer_to_str(self.acDescription)
#AE算法描述
class tSdkAeAlgorithm(MvStructure):
_fields_ = [
("iIndex", c_int), # 编号
("acDescription", c_char * 32), # 描述信息
]
def GetDescription(self):
return _string_buffer_to_str(self.acDescription)
#RAW转RGB算法描述
class tSdkBayerDecodeAlgorithm(MvStructure):
_fields_ = [
("iIndex", c_int), # 编号
("acDescription", c_char * 32), # 描述信息
]
def GetDescription(self):
return _string_buffer_to_str(self.acDescription)
#帧率统计信息
class tSdkFrameStatistic(MvStructure):
_fields_ = [
("iTotal", c_int), #当前采集的总帧数(包括错误帧)
("iCapture", c_int), #当前采集的有效帧的数量
("iLost", c_int), #当前丢帧的数量
]
#相机输出的图像数据格式
class tSdkMediaType(MvStructure):
_fields_ = [
("iIndex", c_int), # 格式种类编号
("acDescription", c_char * 32), # 描述信息
("iMediaType", c_uint), # 对应的图像格式编码如CAMERA_MEDIA_TYPE_BAYGR8。
]
def GetDescription(self):
return _string_buffer_to_str(self.acDescription)
#伽马的设定范围
class tGammaRange(MvStructure):
_fields_ = [
("iMin", c_int), #最小值
("iMax", c_int), #最大值
]
#对比度的设定范围
class tContrastRange(MvStructure):
_fields_ = [
("iMin", c_int), #最小值
("iMax", c_int), #最大值
]
#RGB三通道数字增益的设定范围
class tRgbGainRange(MvStructure):
_fields_ = [
("iRGainMin", c_int), #红色增益的最小值
("iRGainMax", c_int), #红色增益的最大值
("iGGainMin", c_int), #绿色增益的最小值
("iGGainMax", c_int), #绿色增益的最大值
("iBGainMin", c_int), #蓝色增益的最小值
("iBGainMax", c_int), #蓝色增益的最大值
]
#饱和度设定的范围
class tSaturationRange(MvStructure):
_fields_ = [
("iMin", c_int), #最小值
("iMax", c_int), #最大值
]
#锐化的设定范围
class tSharpnessRange(MvStructure):
_fields_ = [
("iMin", c_int), #最小值
("iMax", c_int), #最大值
]
#ISP模块的使能信息
class tSdkIspCapacity(MvStructure):
_fields_ = [
("bMonoSensor", c_int), #表示该型号相机是否为黑白相机,如果是黑白相机,则颜色相关的功能都无法调节
("bWbOnce", c_int), #表示该型号相机是否支持手动白平衡功能
("bAutoWb", c_int), #表示该型号相机是否支持自动白平衡功能
("bAutoExposure", c_int), #表示该型号相机是否支持自动曝光功能
("bManualExposure", c_int), #表示该型号相机是否支持手动曝光功能
("bAntiFlick", c_int), #表示该型号相机是否支持抗频闪功能
("bDeviceIsp", c_int), #表示该型号相机是否支持硬件ISP功能
("bForceUseDeviceIsp", c_int), #bDeviceIsp和bForceUseDeviceIsp同时为TRUE时表示强制只用硬件ISP不可取消。
("bZoomHD", c_int), #相机硬件是否支持图像缩放输出(只能是缩小)。
]
# 定义整合的设备描述信息这些信息可以用于动态构建UI
class tSdkCameraCapbility(MvStructure):
_fields_ = [
("pTriggerDesc", POINTER(tSdkTrigger)),
("iTriggerDesc", c_int), #触发模式的个数即pTriggerDesc数组的大小
("pImageSizeDesc", POINTER(tSdkImageResolution)),
("iImageSizeDesc", c_int), #预设分辨率的个数即pImageSizeDesc数组的大小
("pClrTempDesc", POINTER(tSdkColorTemperatureDes)),
("iClrTempDesc", c_int), #预设色温个数
("pMediaTypeDesc", POINTER(tSdkMediaType)),
("iMediaTypeDesc", c_int), #相机输出图像格式的种类个数即pMediaTypeDesc数组的大小。
("pFrameSpeedDesc", POINTER(tSdkFrameSpeed)), #可调节帧速类型,对应界面上普通 高速 和超级三种速度设置
("iFrameSpeedDesc", c_int), #可调节帧速类型的个数即pFrameSpeedDesc数组的大小。
("pPackLenDesc", POINTER(tSdkPackLength)), #传输包长度,一般用于网络设备
("iPackLenDesc", c_int), #可供选择的传输分包长度的个数即pPackLenDesc数组的大小。
("iOutputIoCounts", c_int), #可编程输出IO的个数
("iInputIoCounts", c_int), #可编程输入IO的个数
("pPresetLutDesc", POINTER(tSdkPresetLut)), #相机预设的LUT表
("iPresetLut", c_int), #相机预设的LUT表的个数即pPresetLutDesc数组的大小
("iUserDataMaxLen", c_int), #指示该相机中用于保存用户数据区的最大长度。为0表示无。
("bParamInDevice", c_int), #指示该设备是否支持从设备中读写参数组。1为支持0不支持。
("pAeAlmSwDesc", POINTER(tSdkAeAlgorithm)),#软件自动曝光算法描述
("iAeAlmSwDesc", c_int), #软件自动曝光算法个数
("pAeAlmHdDesc", POINTER(tSdkAeAlgorithm)),#硬件自动曝光算法描述为NULL表示不支持硬件自动曝光
("iAeAlmHdDesc", c_int), #硬件自动曝光算法个数为0表示不支持硬件自动曝光
("pBayerDecAlmSwDesc", POINTER(tSdkBayerDecodeAlgorithm)),#软件Bayer转换为RGB数据的算法描述
("iBayerDecAlmSwDesc", c_int), #软件Bayer转换为RGB数据的算法个数
("pBayerDecAlmHdDesc", POINTER(tSdkBayerDecodeAlgorithm)),#硬件Bayer转换为RGB数据的算法描述为NULL表示不支持
("iBayerDecAlmHdDesc", c_int), #硬件Bayer转换为RGB数据的算法个数为0表示不支持
# 图像参数的调节范围定义,用于动态构建UI
("sExposeDesc", tSdkExpose), #曝光的范围值
("sResolutionRange", tSdkResolutionRange), #分辨率范围描述
("sRgbGainRange", tRgbGainRange), #图像数字增益范围描述
("sSaturationRange", tSaturationRange), #饱和度范围描述
("sGammaRange", tGammaRange), #伽马范围描述
("sContrastRange", tContrastRange), #对比度范围描述
("sSharpnessRange", tSharpnessRange), #锐化范围描述
("sIspCapacity", tSdkIspCapacity), #ISP能力描述
]
#图像帧头信息
class tSdkFrameHead(MvStructure):
_fields_ = [
("uiMediaType", c_uint), # 图像格式,Image Format
("uBytes", c_uint), # 图像数据字节数,Total bytes
("iWidth", c_int), # 宽度 Image height
("iHeight", c_int), # 高度 Image width
("iWidthZoomSw", c_int), # 软件缩放的宽度,不需要进行软件裁剪的图像此变量设置为0.
("iHeightZoomSw", c_int), # 软件缩放的高度,不需要进行软件裁剪的图像此变量设置为0.
("bIsTrigger", c_int), # 指示是否为触发帧 is trigger
("uiTimeStamp", c_uint), # 该帧的采集时间单位0.1毫秒
("uiExpTime", c_uint), # 当前图像的曝光值单位为微秒us
("fAnalogGain", c_float), # 当前图像的模拟增益倍数
("iGamma", c_int), # 该帧图像的伽马设定值仅当LUT模式为动态参数生成时有效其余模式下为-1
("iContrast", c_int), # 该帧图像的对比度设定值仅当LUT模式为动态参数生成时有效其余模式下为-1
("iSaturation", c_int), # 该帧图像的饱和度设定值对于黑白相机无意义为0
("fRgain", c_float), # 该帧图像处理的红色数字增益倍数对于黑白相机无意义为1
("fGgain", c_float), # 该帧图像处理的绿色数字增益倍数对于黑白相机无意义为1
("fBgain", c_float), # 该帧图像处理的蓝色数字增益倍数对于黑白相机无意义为1
]
# Grabber统计信息
class tSdkGrabberStat(MvStructure):
_fields_ = [
("Width", c_int), # 帧图像大小
("Height", c_int), # 帧图像大小
("Disp", c_int), # 显示帧数量
("Capture", c_int), # 采集的有效帧的数量
("Lost", c_int), # 丢帧的数量
("Error", c_int), # 错帧的数量
("DispFps", c_float), # 显示帧率
("CapFps", c_float), # 捕获帧率
]
# 方法回调辅助类
class method(object):
def __init__(self, FuncType):
super(method, self).__init__()
self.FuncType = FuncType
self.cache = {}
def __call__(self, cb):
self.cb = cb
return self
def __get__(self, obj, objtype):
try:
return self.cache[obj]
except KeyError as e:
def cl(*args):
return self.cb(obj, *args)
r = self.cache[obj] = self.FuncType(cl)
return r
# 图像捕获的回调函数定义
CAMERA_SNAP_PROC = CALLBACK_FUNC_TYPE(None, c_int, c_void_p, POINTER(tSdkFrameHead), c_void_p)
# 相机连接状态回调
CAMERA_CONNECTION_STATUS_CALLBACK = CALLBACK_FUNC_TYPE(None, c_int, c_uint, c_uint, c_void_p)
# 异步抓图完成回调
pfnCameraGrabberSaveImageComplete = CALLBACK_FUNC_TYPE(None, c_void_p, c_void_p, c_int, c_void_p)
# 帧监听回调
pfnCameraGrabberFrameListener = CALLBACK_FUNC_TYPE(c_int, c_void_p, c_int, c_void_p, POINTER(tSdkFrameHead), c_void_p)
# 采集器图像捕获的回调
pfnCameraGrabberFrameCallback = CALLBACK_FUNC_TYPE(None, c_void_p, c_void_p, POINTER(tSdkFrameHead), c_void_p)
#-----------------------------------函数接口------------------------------------------
# 线程局部存储
_tls = local()
# 存储最后一次SDK调用返回的错误码
def GetLastError():
try:
return _tls.last_error
except AttributeError as e:
_tls.last_error = 0
return 0
def SetLastError(err_code):
_tls.last_error = err_code
def _string_buffer_to_str(buf):
s = buf if isinstance(buf, type(b'')) else buf.value
for codec in ('gbk', 'utf-8'):
try:
s = s.decode(codec)
break
except UnicodeDecodeError as e:
continue
if isinstance(s, str):
return s
else:
return s.encode('utf-8')
def _str_to_string_buffer(str):
if type(str) is type(u''):
s = str.encode('gbk')
else:
s = str.decode('utf-8').encode('gbk')
return create_string_buffer(s)
def CameraSdkInit(iLanguageSel):
err_code = _sdk.CameraSdkInit(iLanguageSel)
SetLastError(err_code)
return err_code
def CameraEnumerateDevice(MaxCount = 32):
Nums = c_int(MaxCount)
pCameraList = (tSdkCameraDevInfo * Nums.value)()
err_code = _sdk.CameraEnumerateDevice(pCameraList, byref(Nums))
SetLastError(err_code)
return pCameraList[0:Nums.value]
def CameraEnumerateDeviceEx():
return _sdk.CameraEnumerateDeviceEx()
def CameraIsOpened(pCameraInfo):
pOpened = c_int()
err_code = _sdk.CameraIsOpened(byref(pCameraInfo), byref(pOpened) )
SetLastError(err_code)
return pOpened.value != 0
def CameraInit(pCameraInfo, emParamLoadMode = -1, emTeam = -1):
pCameraHandle = c_int()
err_code = _sdk.CameraInit(byref(pCameraInfo), emParamLoadMode, emTeam, byref(pCameraHandle))
SetLastError(err_code)
if err_code != 0:
raise CameraException(err_code)
return pCameraHandle.value
def CameraInitEx(iDeviceIndex, emParamLoadMode = -1, emTeam = -1):
pCameraHandle = c_int()
err_code = _sdk.CameraInitEx(iDeviceIndex, emParamLoadMode, emTeam, byref(pCameraHandle))
SetLastError(err_code)
if err_code != 0:
raise CameraException(err_code)
return pCameraHandle.value
def CameraInitEx2(CameraName):
pCameraHandle = c_int()
err_code = _sdk.CameraInitEx2(_str_to_string_buffer(CameraName), byref(pCameraHandle))
SetLastError(err_code)
if err_code != 0:
raise CameraException(err_code)
return pCameraHandle.value
def CameraSetCallbackFunction(hCamera, pCallBack, pContext = 0):
err_code = _sdk.CameraSetCallbackFunction(hCamera, pCallBack, c_void_p(pContext), None)
SetLastError(err_code)
return err_code
def CameraUnInit(hCamera):
err_code = _sdk.CameraUnInit(hCamera)
SetLastError(err_code)
return err_code
def CameraGetInformation(hCamera):
pbuffer = c_char_p()
err_code = _sdk.CameraGetInformation(hCamera, byref(pbuffer) )
SetLastError(err_code)
if err_code == 0 and pbuffer.value is not None:
return _string_buffer_to_str(pbuffer)
return ''
def CameraImageProcess(hCamera, pbyIn, pbyOut, pFrInfo):
err_code = _sdk.CameraImageProcess(hCamera, c_void_p(pbyIn), c_void_p(pbyOut), byref(pFrInfo))
SetLastError(err_code)
return err_code
def CameraImageProcessEx(hCamera, pbyIn, pbyOut, pFrInfo, uOutFormat, uReserved):
err_code = _sdk.CameraImageProcessEx(hCamera, c_void_p(pbyIn), c_void_p(pbyOut), byref(pFrInfo), uOutFormat, uReserved)
SetLastError(err_code)
return err_code
def CameraDisplayInit(hCamera, hWndDisplay):
err_code = _sdk.CameraDisplayInit(hCamera, hWndDisplay)
SetLastError(err_code)
return err_code
def CameraDisplayRGB24(hCamera, pFrameBuffer, pFrInfo):
err_code = _sdk.CameraDisplayRGB24(hCamera, c_void_p(pFrameBuffer), byref(pFrInfo) )
SetLastError(err_code)
return err_code
def CameraSetDisplayMode(hCamera, iMode):
err_code = _sdk.CameraSetDisplayMode(hCamera, iMode)
SetLastError(err_code)
return err_code
def CameraSetDisplayOffset(hCamera, iOffsetX, iOffsetY):
err_code = _sdk.CameraSetDisplayOffset(hCamera, iOffsetX, iOffsetY)
SetLastError(err_code)
return err_code
def CameraSetDisplaySize(hCamera, iWidth, iHeight):
err_code = _sdk.CameraSetDisplaySize(hCamera, iWidth, iHeight)
SetLastError(err_code)
return err_code
def CameraGetImageBuffer(hCamera, wTimes):
pbyBuffer = c_void_p()
pFrameInfo = tSdkFrameHead()
err_code = _sdk.CameraGetImageBuffer(hCamera, byref(pFrameInfo), byref(pbyBuffer), wTimes)
SetLastError(err_code)
if err_code != 0:
raise CameraException(err_code)
return (pbyBuffer.value, pFrameInfo)
def CameraGetImageBufferEx(hCamera, wTimes):
_sdk.CameraGetImageBufferEx.restype = c_void_p
piWidth = c_int()
piHeight = c_int()
pFrameBuffer = _sdk.CameraGetImageBufferEx(hCamera, byref(piWidth), byref(piHeight), wTimes)
err_code = CAMERA_STATUS_SUCCESS if pFrameBuffer else CAMERA_STATUS_TIME_OUT
SetLastError(err_code)
if pFrameBuffer:
return (pFrameBuffer, piWidth.value, piHeight.value)
else:
raise CameraException(err_code)
def CameraSnapToBuffer(hCamera, wTimes):
pbyBuffer = c_void_p()
pFrameInfo = tSdkFrameHead()
err_code = _sdk.CameraSnapToBuffer(hCamera, byref(pFrameInfo), byref(pbyBuffer), wTimes)
SetLastError(err_code)
if err_code != 0:
raise CameraException(err_code)
return (pbyBuffer.value, pFrameInfo)
def CameraReleaseImageBuffer(hCamera, pbyBuffer):
err_code = _sdk.CameraReleaseImageBuffer(hCamera, c_void_p(pbyBuffer) )
SetLastError(err_code)
return err_code
def CameraPlay(hCamera):
err_code = _sdk.CameraPlay(hCamera)
SetLastError(err_code)
return err_code
def CameraPause(hCamera):
err_code = _sdk.CameraPause(hCamera)
SetLastError(err_code)
return err_code
def CameraStop(hCamera):
err_code = _sdk.CameraStop(hCamera)
SetLastError(err_code)
return err_code
def CameraInitRecord(hCamera, iFormat, pcSavePath, b2GLimit, dwQuality, iFrameRate):
err_code = _sdk.CameraInitRecord(hCamera, iFormat, _str_to_string_buffer(pcSavePath), b2GLimit, dwQuality, iFrameRate)
SetLastError(err_code)
return err_code
def CameraStopRecord(hCamera):
err_code = _sdk.CameraStopRecord(hCamera)
SetLastError(err_code)
return err_code
def CameraPushFrame(hCamera, pbyImageBuffer, pFrInfo):
err_code = _sdk.CameraPushFrame(hCamera, c_void_p(pbyImageBuffer), byref(pFrInfo) )
SetLastError(err_code)
return err_code
def CameraSaveImage(hCamera, lpszFileName, pbyImageBuffer, pFrInfo, byFileType, byQuality):
err_code = _sdk.CameraSaveImage(hCamera, _str_to_string_buffer(lpszFileName), c_void_p(pbyImageBuffer), byref(pFrInfo), byFileType, byQuality)
SetLastError(err_code)
return err_code
def CameraSaveImageEx(hCamera, lpszFileName, pbyImageBuffer, uImageFormat, iWidth, iHeight, byFileType, byQuality):
err_code = _sdk.CameraSaveImageEx(hCamera, _str_to_string_buffer(lpszFileName), c_void_p(pbyImageBuffer), uImageFormat, iWidth, iHeight, byFileType, byQuality)
SetLastError(err_code)
return err_code
def CameraGetImageResolution(hCamera):
psCurVideoSize = tSdkImageResolution()
err_code = _sdk.CameraGetImageResolution(hCamera, byref(psCurVideoSize) )
SetLastError(err_code)
return psCurVideoSize
def CameraSetImageResolution(hCamera, pImageResolution):
err_code = _sdk.CameraSetImageResolution(hCamera, byref(pImageResolution) )
SetLastError(err_code)
return err_code
def CameraSetImageResolutionEx(hCamera, iIndex, Mode, ModeSize, x, y, width, height, ZoomWidth, ZoomHeight):
err_code = _sdk.CameraSetImageResolutionEx(hCamera, iIndex, Mode, ModeSize, x, y, width, height, ZoomWidth, ZoomHeight)
SetLastError(err_code)
return err_code
def CameraGetMediaType(hCamera):
piMediaType = c_int()
err_code = _sdk.CameraGetMediaType(hCamera, byref(piMediaType) )
SetLastError(err_code)
return piMediaType.value
def CameraSetMediaType(hCamera, iMediaType):
err_code = _sdk.CameraSetMediaType(hCamera, iMediaType)
SetLastError(err_code)
return err_code
def CameraSetAeState(hCamera, bAeState):
err_code = _sdk.CameraSetAeState(hCamera, bAeState)
SetLastError(err_code)
return err_code
def CameraGetAeState(hCamera):
pAeState = c_int()
err_code = _sdk.CameraGetAeState(hCamera, byref(pAeState) )
SetLastError(err_code)
return pAeState.value
def CameraSetSharpness(hCamera, iSharpness):
err_code = _sdk.CameraSetSharpness(hCamera, iSharpness)
SetLastError(err_code)
return err_code
def CameraGetSharpness(hCamera):
piSharpness = c_int()
err_code = _sdk.CameraGetSharpness(hCamera, byref(piSharpness) )
SetLastError(err_code)
return piSharpness.value
def CameraSetLutMode(hCamera, emLutMode):
err_code = _sdk.CameraSetLutMode(hCamera, emLutMode)
SetLastError(err_code)
return err_code
def CameraGetLutMode(hCamera):
pemLutMode = c_int()
err_code = _sdk.CameraGetLutMode(hCamera, byref(pemLutMode) )
SetLastError(err_code)
return pemLutMode.value
def CameraSelectLutPreset(hCamera, iSel):
err_code = _sdk.CameraSelectLutPreset(hCamera, iSel)
SetLastError(err_code)
return err_code
def CameraGetLutPresetSel(hCamera):
piSel = c_int()
err_code = _sdk.CameraGetLutPresetSel(hCamera, byref(piSel) )
SetLastError(err_code)
return piSel.value
def CameraSetCustomLut(hCamera, iChannel, pLut):
pLutNative = (c_ushort * 4096)(*pLut)
err_code = _sdk.CameraSetCustomLut(hCamera, iChannel, pLutNative)
SetLastError(err_code)
return err_code
def CameraGetCustomLut(hCamera, iChannel):
pLutNative = (c_ushort * 4096)()
err_code = _sdk.CameraGetCustomLut(hCamera, iChannel, pLutNative)
SetLastError(err_code)
return pLutNative[:]
def CameraGetCurrentLut(hCamera, iChannel):
pLutNative = (c_ushort * 4096)()
err_code = _sdk.CameraGetCurrentLut(hCamera, iChannel, pLutNative)
SetLastError(err_code)
return pLutNative[:]
def CameraSetWbMode(hCamera, bAuto):
err_code = _sdk.CameraSetWbMode(hCamera, bAuto)
SetLastError(err_code)
return err_code
def CameraGetWbMode(hCamera):
pbAuto = c_int()
err_code = _sdk.CameraGetWbMode(hCamera, byref(pbAuto) )
SetLastError(err_code)
return pbAuto.value
def CameraSetPresetClrTemp(hCamera, iSel):
err_code = _sdk.CameraSetPresetClrTemp(hCamera, iSel)
SetLastError(err_code)
return err_code
def CameraGetPresetClrTemp(hCamera):
piSel = c_int()
err_code = _sdk.CameraGetPresetClrTemp(hCamera, byref(piSel) )
SetLastError(err_code)
return piSel.value
def CameraSetUserClrTempGain(hCamera, iRgain, iGgain, iBgain):
err_code = _sdk.CameraSetUserClrTempGain(hCamera, iRgain, iGgain, iBgain)
SetLastError(err_code)
return err_code
def CameraGetUserClrTempGain(hCamera):
piRgain = c_int()
piGgain = c_int()
piBgain = c_int()
err_code = _sdk.CameraGetUserClrTempGain(hCamera, byref(piRgain), byref(piGgain), byref(piBgain) )
SetLastError(err_code)
return (piRgain.value, piGgain.value, piBgain.value)
def CameraSetUserClrTempMatrix(hCamera, pMatrix):
pMatrixNative = (c_float * 9)(*pMatrix)
err_code = _sdk.CameraSetUserClrTempMatrix(hCamera, pMatrixNative)
SetLastError(err_code)
return err_code
def CameraGetUserClrTempMatrix(hCamera):
pMatrixNative = (c_float * 9)()
err_code = _sdk.CameraGetUserClrTempMatrix(hCamera, pMatrixNative)
SetLastError(err_code)
return pMatrixNative[:]
def CameraSetClrTempMode(hCamera, iMode):
err_code = _sdk.CameraSetClrTempMode(hCamera, iMode)
SetLastError(err_code)
return err_code
def CameraGetClrTempMode(hCamera):
piMode = c_int()
err_code = _sdk.CameraGetClrTempMode(hCamera, byref(piMode) )
SetLastError(err_code)
return piMode.value
def CameraSetOnceWB(hCamera):
err_code = _sdk.CameraSetOnceWB(hCamera)
SetLastError(err_code)
return err_code
def CameraSetOnceBB(hCamera):
err_code = _sdk.CameraSetOnceBB(hCamera)
SetLastError(err_code)
return err_code
def CameraSetAeTarget(hCamera, iAeTarget):
err_code = _sdk.CameraSetAeTarget(hCamera, iAeTarget)
SetLastError(err_code)
return err_code
def CameraGetAeTarget(hCamera):
piAeTarget = c_int()
err_code = _sdk.CameraGetAeTarget(hCamera, byref(piAeTarget) )
SetLastError(err_code)
return piAeTarget.value
def CameraSetAeExposureRange(hCamera, fMinExposureTime, fMaxExposureTime):
err_code = _sdk.CameraSetAeExposureRange(hCamera, c_double(fMinExposureTime), c_double(fMaxExposureTime) )
SetLastError(err_code)
return err_code
def CameraGetAeExposureRange(hCamera):
fMinExposureTime = c_double()
fMaxExposureTime = c_double()
err_code = _sdk.CameraGetAeExposureRange(hCamera, byref(fMinExposureTime), byref(fMaxExposureTime) )
SetLastError(err_code)
return (fMinExposureTime.value, fMaxExposureTime.value)
def CameraSetAeAnalogGainRange(hCamera, iMinAnalogGain, iMaxAnalogGain):
err_code = _sdk.CameraSetAeAnalogGainRange(hCamera, iMinAnalogGain, iMaxAnalogGain)
SetLastError(err_code)
return err_code
def CameraGetAeAnalogGainRange(hCamera):
iMinAnalogGain = c_int()
iMaxAnalogGain = c_int()
err_code = _sdk.CameraGetAeAnalogGainRange(hCamera, byref(iMinAnalogGain), byref(iMaxAnalogGain) )
SetLastError(err_code)
return (iMinAnalogGain.value, iMaxAnalogGain.value)
def CameraSetAeThreshold(hCamera, iThreshold):
err_code = _sdk.CameraSetAeThreshold(hCamera, iThreshold)
SetLastError(err_code)
return err_code
def CameraGetAeThreshold(hCamera):
iThreshold = c_int()
err_code = _sdk.CameraGetAeThreshold(hCamera, byref(iThreshold))
SetLastError(err_code)
return iThreshold.value
def CameraSetExposureTime(hCamera, fExposureTime):
err_code = _sdk.CameraSetExposureTime(hCamera, c_double(fExposureTime) )
SetLastError(err_code)
return err_code
def CameraGetExposureLineTime(hCamera):
pfLineTime = c_double()
err_code = _sdk.CameraGetExposureLineTime(hCamera, byref(pfLineTime))
SetLastError(err_code)
return pfLineTime.value
def CameraGetExposureTime(hCamera):
pfExposureTime = c_double()
err_code = _sdk.CameraGetExposureTime(hCamera, byref(pfExposureTime))
SetLastError(err_code)
return pfExposureTime.value
def CameraGetExposureTimeRange(hCamera):
pfMin = c_double()
pfMax = c_double()
pfStep = c_double()
err_code = _sdk.CameraGetExposureTimeRange(hCamera, byref(pfMin), byref(pfMax), byref(pfStep))
SetLastError(err_code)
return (pfMin.value, pfMax.value, pfStep.value)
def CameraSetAnalogGain(hCamera, iAnalogGain):
err_code = _sdk.CameraSetAnalogGain(hCamera, iAnalogGain)
SetLastError(err_code)
return err_code
def CameraGetAnalogGain(hCamera):
piAnalogGain = c_int()
err_code = _sdk.CameraGetAnalogGain(hCamera, byref(piAnalogGain))
SetLastError(err_code)
return piAnalogGain.value
def CameraSetGain(hCamera, iRGain, iGGain, iBGain):
err_code = _sdk.CameraSetGain(hCamera, iRGain, iGGain, iBGain)
SetLastError(err_code)
return err_code
def CameraGetGain(hCamera):
piRGain = c_int()
piGGain = c_int()
piBGain = c_int()
err_code = _sdk.CameraGetGain(hCamera, byref(piRGain), byref(piGGain), byref(piBGain))
SetLastError(err_code)
return (piRGain.value, piGGain.value, piBGain.value)
def CameraSetGamma(hCamera, iGamma):
err_code = _sdk.CameraSetGamma(hCamera, iGamma)
SetLastError(err_code)
return err_code
def CameraGetGamma(hCamera):
piGamma = c_int()
err_code = _sdk.CameraGetGamma(hCamera, byref(piGamma))
SetLastError(err_code)
return piGamma.value
def CameraSetContrast(hCamera, iContrast):
err_code = _sdk.CameraSetContrast(hCamera, iContrast)
SetLastError(err_code)
return err_code
def CameraGetContrast(hCamera):
piContrast = c_int()
err_code = _sdk.CameraGetContrast(hCamera, byref(piContrast))
SetLastError(err_code)
return piContrast.value
def CameraSetSaturation(hCamera, iSaturation):
err_code = _sdk.CameraSetSaturation(hCamera, iSaturation)
SetLastError(err_code)
return err_code
def CameraGetSaturation(hCamera):
piSaturation = c_int()
err_code = _sdk.CameraGetSaturation(hCamera, byref(piSaturation))
SetLastError(err_code)
return piSaturation.value
def CameraSetMonochrome(hCamera, bEnable):
err_code = _sdk.CameraSetMonochrome(hCamera, bEnable)
SetLastError(err_code)
return err_code
def CameraGetMonochrome(hCamera):
pbEnable = c_int()
err_code = _sdk.CameraGetMonochrome(hCamera, byref(pbEnable))
SetLastError(err_code)
return pbEnable.value
def CameraSetInverse(hCamera, bEnable):
err_code = _sdk.CameraSetInverse(hCamera, bEnable)
SetLastError(err_code)
return err_code
def CameraGetInverse(hCamera):
pbEnable = c_int()
err_code = _sdk.CameraGetInverse(hCamera, byref(pbEnable))
SetLastError(err_code)
return pbEnable.value
def CameraSetAntiFlick(hCamera, bEnable):
err_code = _sdk.CameraSetAntiFlick(hCamera, bEnable)
SetLastError(err_code)
return err_code
def CameraGetAntiFlick(hCamera):
pbEnable = c_int()
err_code = _sdk.CameraGetAntiFlick(hCamera, byref(pbEnable))
SetLastError(err_code)
return pbEnable.value
def CameraGetLightFrequency(hCamera):
piFrequencySel = c_int()
err_code = _sdk.CameraGetLightFrequency(hCamera, byref(piFrequencySel))
SetLastError(err_code)
return piFrequencySel.value
def CameraSetLightFrequency(hCamera, iFrequencySel):
err_code = _sdk.CameraSetLightFrequency(hCamera, iFrequencySel)
SetLastError(err_code)
return err_code
def CameraSetFrameSpeed(hCamera, iFrameSpeed):
err_code = _sdk.CameraSetFrameSpeed(hCamera, iFrameSpeed)
SetLastError(err_code)
return err_code
def CameraGetFrameSpeed(hCamera):
piFrameSpeed = c_int()
err_code = _sdk.CameraGetFrameSpeed(hCamera, byref(piFrameSpeed))
SetLastError(err_code)
return piFrameSpeed.value
def CameraSetParameterMode(hCamera, iMode):
err_code = _sdk.CameraSetParameterMode(hCamera, iMode)
SetLastError(err_code)
return err_code
def CameraGetParameterMode(hCamera):
piTarget = c_int()
err_code = _sdk.CameraGetParameterMode(hCamera, byref(piTarget))
SetLastError(err_code)
return piTarget.value
def CameraSetParameterMask(hCamera, uMask):
err_code = _sdk.CameraSetParameterMask(hCamera, uMask)
SetLastError(err_code)
return err_code
def CameraSaveParameter(hCamera, iTeam):
err_code = _sdk.CameraSaveParameter(hCamera, iTeam)
SetLastError(err_code)
return err_code
def CameraSaveParameterToFile(hCamera, sFileName):
err_code = _sdk.CameraSaveParameterToFile(hCamera, _str_to_string_buffer(sFileName))
SetLastError(err_code)
return err_code
def CameraReadParameterFromFile(hCamera, sFileName):
err_code = _sdk.CameraReadParameterFromFile(hCamera, _str_to_string_buffer(sFileName))
SetLastError(err_code)
return err_code
def CameraLoadParameter(hCamera, iTeam):
err_code = _sdk.CameraLoadParameter(hCamera, iTeam)
SetLastError(err_code)
return err_code
def CameraGetCurrentParameterGroup(hCamera):
piTeam = c_int()
err_code = _sdk.CameraGetCurrentParameterGroup(hCamera, byref(piTeam))
SetLastError(err_code)
return piTeam.value
def CameraSetTransPackLen(hCamera, iPackSel):
err_code = _sdk.CameraSetTransPackLen(hCamera, iPackSel)
SetLastError(err_code)
return err_code
def CameraGetTransPackLen(hCamera):
piPackSel = c_int()
err_code = _sdk.CameraGetTransPackLen(hCamera, byref(piPackSel))
SetLastError(err_code)
return piPackSel.value
def CameraIsAeWinVisible(hCamera):
pbIsVisible = c_int()
err_code = _sdk.CameraIsAeWinVisible(hCamera, byref(pbIsVisible))
SetLastError(err_code)
return pbIsVisible.value
def CameraSetAeWinVisible(hCamera, bIsVisible):
err_code = _sdk.CameraSetAeWinVisible(hCamera, bIsVisible)
SetLastError(err_code)
return err_code
def CameraGetAeWindow(hCamera):
piHOff = c_int()
piVOff = c_int()
piWidth = c_int()
piHeight = c_int()
err_code = _sdk.CameraGetAeWindow(hCamera, byref(piHOff), byref(piVOff), byref(piWidth), byref(piHeight))
SetLastError(err_code)
return (piHOff.value, piVOff.value, piWidth.value, piHeight.value)
def CameraSetAeWindow(hCamera, iHOff, iVOff, iWidth, iHeight):
err_code = _sdk.CameraSetAeWindow(hCamera, iHOff, iVOff, iWidth, iHeight)
SetLastError(err_code)
return err_code
def CameraSetMirror(hCamera, iDir, bEnable):
err_code = _sdk.CameraSetMirror(hCamera, iDir, bEnable)
SetLastError(err_code)
return err_code
def CameraGetMirror(hCamera, iDir):
pbEnable = c_int()
err_code = _sdk.CameraGetMirror(hCamera, iDir, byref(pbEnable))
SetLastError(err_code)
return pbEnable.value
def CameraSetRotate(hCamera, iRot):
err_code = _sdk.CameraSetRotate(hCamera, iRot)
SetLastError(err_code)
return err_code
def CameraGetRotate(hCamera):
iRot = c_int()
err_code = _sdk.CameraGetRotate(hCamera, byref(iRot))
SetLastError(err_code)
return iRot.value
def CameraGetWbWindow(hCamera):
PiHOff = c_int()
PiVOff = c_int()
PiWidth = c_int()
PiHeight = c_int()
err_code = _sdk.CameraGetWbWindow(hCamera, byref(PiHOff), byref(PiVOff), byref(PiWidth), byref(PiHeight))
SetLastError(err_code)
return (PiHOff.value, PiVOff.value, PiWidth.value, PiHeight.value)
def CameraSetWbWindow(hCamera, iHOff, iVOff, iWidth, iHeight):
err_code = _sdk.CameraSetWbWindow(hCamera, iHOff, iVOff, iWidth, iHeight)
SetLastError(err_code)
return err_code
def CameraIsWbWinVisible(hCamera):
pbShow = c_int()
err_code = _sdk.CameraIsWbWinVisible(hCamera, byref(pbShow))
SetLastError(err_code)
return pbShow.value
def CameraSetWbWinVisible(hCamera, bShow):
err_code = _sdk.CameraSetWbWinVisible(hCamera, bShow)
SetLastError(err_code)
return err_code
def CameraImageOverlay(hCamera, pRgbBuffer, pFrInfo):
err_code = _sdk.CameraImageOverlay(hCamera, c_void_p(pRgbBuffer), byref(pFrInfo))
SetLastError(err_code)
return err_code
def CameraSetCrossLine(hCamera, iLine, x, y, uColor, bVisible):
err_code = _sdk.CameraSetCrossLine(hCamera, iLine, x, y, uColor, bVisible)
SetLastError(err_code)
return err_code
def CameraGetCrossLine(hCamera, iLine):
px = c_int()
py = c_int()
pcolor = c_uint()
pbVisible = c_int()
err_code = _sdk.CameraGetCrossLine(hCamera, iLine, byref(px), byref(py), byref(pcolor), byref(pbVisible))
SetLastError(err_code)
return (px.value, py.value, pcolor.value, pbVisible.value)
def CameraGetCapability(hCamera):
pCameraInfo = tSdkCameraCapbility()
err_code = _sdk.CameraGetCapability(hCamera, byref(pCameraInfo))
SetLastError(err_code)
return pCameraInfo
def CameraWriteSN(hCamera, pbySN, iLevel):
err_code = _sdk.CameraWriteSN(hCamera, _str_to_string_buffer(pbySN), iLevel)
SetLastError(err_code)
return err_code
def CameraReadSN(hCamera, iLevel):
pbySN = create_string_buffer(64)
err_code = _sdk.CameraReadSN(hCamera, pbySN, iLevel)
SetLastError(err_code)
return _string_buffer_to_str(pbySN)
def CameraSetTriggerDelayTime(hCamera, uDelayTimeUs):
err_code = _sdk.CameraSetTriggerDelayTime(hCamera, uDelayTimeUs)
SetLastError(err_code)
return err_code
def CameraGetTriggerDelayTime(hCamera):
puDelayTimeUs = c_uint()
err_code = _sdk.CameraGetTriggerDelayTime(hCamera, byref(puDelayTimeUs))
SetLastError(err_code)
return puDelayTimeUs.value
def CameraSetTriggerCount(hCamera, iCount):
err_code = _sdk.CameraSetTriggerCount(hCamera, iCount)
SetLastError(err_code)
return err_code
def CameraGetTriggerCount(hCamera):
piCount = c_int()
err_code = _sdk.CameraGetTriggerCount(hCamera, byref(piCount))
SetLastError(err_code)
return piCount.value
def CameraSoftTrigger(hCamera):
err_code = _sdk.CameraSoftTrigger(hCamera)
SetLastError(err_code)
return err_code
def CameraSetTriggerMode(hCamera, iModeSel):
err_code = _sdk.CameraSetTriggerMode(hCamera, iModeSel)
SetLastError(err_code)
return err_code
def CameraGetTriggerMode(hCamera):
piModeSel = c_int()
err_code = _sdk.CameraGetTriggerMode(hCamera, byref(piModeSel))
SetLastError(err_code)
return piModeSel.value
def CameraSetStrobeMode(hCamera, iMode):
err_code = _sdk.CameraSetStrobeMode(hCamera, iMode)
SetLastError(err_code)
return err_code
def CameraGetStrobeMode(hCamera):
piMode = c_int()
err_code = _sdk.CameraGetStrobeMode(hCamera, byref(piMode))
SetLastError(err_code)
return piMode.value
def CameraSetStrobeDelayTime(hCamera, uDelayTimeUs):
err_code = _sdk.CameraSetStrobeDelayTime(hCamera, uDelayTimeUs)
SetLastError(err_code)
return err_code
def CameraGetStrobeDelayTime(hCamera):
upDelayTimeUs = c_uint()
err_code = _sdk.CameraGetStrobeDelayTime(hCamera, byref(upDelayTimeUs))
SetLastError(err_code)
return upDelayTimeUs.value
def CameraSetStrobePulseWidth(hCamera, uTimeUs):
err_code = _sdk.CameraSetStrobePulseWidth(hCamera, uTimeUs)
SetLastError(err_code)
return err_code
def CameraGetStrobePulseWidth(hCamera):
upTimeUs = c_uint()
err_code = _sdk.CameraGetStrobePulseWidth(hCamera, byref(upTimeUs))
SetLastError(err_code)
return upTimeUs.value
def CameraSetStrobePolarity(hCamera, uPolarity):
err_code = _sdk.CameraSetStrobePolarity(hCamera, uPolarity)
SetLastError(err_code)
return err_code
def CameraGetStrobePolarity(hCamera):
upPolarity = c_uint()
err_code = _sdk.CameraGetStrobePolarity(hCamera, byref(upPolarity))
SetLastError(err_code)
return upPolarity.value
def CameraSetExtTrigSignalType(hCamera, iType):
err_code = _sdk.CameraSetExtTrigSignalType(hCamera, iType)
SetLastError(err_code)
return err_code
def CameraGetExtTrigSignalType(hCamera):
ipType = c_int()
err_code = _sdk.CameraGetExtTrigSignalType(hCamera, byref(ipType))
SetLastError(err_code)
return ipType.value
def CameraSetExtTrigShutterType(hCamera, iType):
err_code = _sdk.CameraSetExtTrigShutterType(hCamera, iType)
SetLastError(err_code)
return err_code
def CameraGetExtTrigShutterType(hCamera):
ipType = c_int()
err_code = _sdk.CameraGetExtTrigShutterType(hCamera, byref(ipType))
SetLastError(err_code)
return ipType.value
def CameraSetExtTrigDelayTime(hCamera, uDelayTimeUs):
err_code = _sdk.CameraSetExtTrigDelayTime(hCamera, uDelayTimeUs)
SetLastError(err_code)
return err_code
def CameraGetExtTrigDelayTime(hCamera):
upDelayTimeUs = c_uint()
err_code = _sdk.CameraGetExtTrigDelayTime(hCamera, byref(upDelayTimeUs))
SetLastError(err_code)
return upDelayTimeUs.value
def CameraSetExtTrigJitterTime(hCamera, uTimeUs):
err_code = _sdk.CameraSetExtTrigJitterTime(hCamera, uTimeUs)
SetLastError(err_code)
return err_code
def CameraGetExtTrigJitterTime(hCamera):
upTimeUs = c_uint()
err_code = _sdk.CameraGetExtTrigJitterTime(hCamera, byref(upTimeUs))
SetLastError(err_code)
return upTimeUs.value
def CameraGetExtTrigCapability(hCamera):
puCapabilityMask = c_uint()
err_code = _sdk.CameraGetExtTrigCapability(hCamera, byref(puCapabilityMask))
SetLastError(err_code)
return puCapabilityMask.value
def CameraPauseLevelTrigger(hCamera):
err_code = _sdk.CameraPauseLevelTrigger(hCamera)
SetLastError(err_code)
return err_code
def CameraGetResolutionForSnap(hCamera):
pImageResolution = tSdkImageResolution()
err_code = _sdk.CameraGetResolutionForSnap(hCamera, byref(pImageResolution))
SetLastError(err_code)
return pImageResolution
def CameraSetResolutionForSnap(hCamera, pImageResolution):
err_code = _sdk.CameraSetResolutionForSnap(hCamera, byref(pImageResolution))
SetLastError(err_code)
return err_code
def CameraCustomizeResolution(hCamera):
pImageCustom = tSdkImageResolution()
err_code = _sdk.CameraCustomizeResolution(hCamera, byref(pImageCustom))
SetLastError(err_code)
return pImageCustom
def CameraCustomizeReferWin(hCamera, iWinType, hParent):
piHOff = c_int()
piVOff = c_int()
piWidth = c_int()
piHeight = c_int()
err_code = _sdk.CameraCustomizeReferWin(hCamera, iWinType, hParent, byref(piHOff), byref(piVOff), byref(piWidth), byref(piHeight))
SetLastError(err_code)
return (piHOff.value, piVOff.value, piWidth.value, piHeight.value)
def CameraShowSettingPage(hCamera, bShow):
err_code = _sdk.CameraShowSettingPage(hCamera, bShow)
SetLastError(err_code)
return err_code
def CameraCreateSettingPage(hCamera, hParent, pWinText, pCallbackFunc = None, pCallbackCtx = 0, uReserved = 0):
err_code = _sdk.CameraCreateSettingPage(hCamera, hParent, _str_to_string_buffer(pWinText), pCallbackFunc, c_void_p(pCallbackCtx), uReserved)
SetLastError(err_code)
return err_code
def CameraCreateSettingPageEx(hCamera):
err_code = _sdk.CameraCreateSettingPageEx(hCamera)
SetLastError(err_code)
return err_code
def CameraSetActiveSettingSubPage(hCamera, index):
err_code = _sdk.CameraSetActiveSettingSubPage(hCamera, index)
SetLastError(err_code)
return err_code
def CameraSetSettingPageParent(hCamera, hParentWnd, Flags):
err_code = _sdk.CameraSetSettingPageParent(hCamera, hParentWnd, Flags)
SetLastError(err_code)
return err_code
def CameraGetSettingPageHWnd(hCamera):
hWnd = c_void_p()
err_code = _sdk.CameraGetSettingPageHWnd(hCamera, byref(hWnd))
SetLastError(err_code)
return hWnd.value
def CameraSpecialControl(hCamera, dwCtrlCode, dwParam, lpData):
err_code = _sdk.CameraSpecialControl(hCamera, dwCtrlCode, dwParam, c_void_p(lpData) )
SetLastError(err_code)
return err_code
def CameraGetFrameStatistic(hCamera):
psFrameStatistic = tSdkFrameStatistic()
err_code = _sdk.CameraGetFrameStatistic(hCamera, byref(psFrameStatistic))
SetLastError(err_code)
return psFrameStatistic
def CameraSetNoiseFilter(hCamera, bEnable):
err_code = _sdk.CameraSetNoiseFilter(hCamera, bEnable)
SetLastError(err_code)
return err_code
def CameraGetNoiseFilterState(hCamera):
pEnable = c_int()
err_code = _sdk.CameraGetNoiseFilterState(hCamera, byref(pEnable))
SetLastError(err_code)
return pEnable.value
def CameraRstTimeStamp(hCamera):
err_code = _sdk.CameraRstTimeStamp(hCamera)
SetLastError(err_code)
return err_code
def CameraSaveUserData(hCamera, uStartAddr, pbData):
err_code = _sdk.CameraSaveUserData(hCamera, uStartAddr, pbData, len(pbData))
SetLastError(err_code)
return err_code
def CameraLoadUserData(hCamera, uStartAddr, ilen):
pbData = create_string_buffer(ilen)
err_code = _sdk.CameraLoadUserData(hCamera, uStartAddr, pbData, ilen)
SetLastError(err_code)
return pbData[:]
def CameraGetFriendlyName(hCamera):
pName = create_string_buffer(64)
err_code = _sdk.CameraGetFriendlyName(hCamera, pName)
SetLastError(err_code)
return _string_buffer_to_str(pName)
def CameraSetFriendlyName(hCamera, pName):
pNameBuf = _str_to_string_buffer(pName)
resize(pNameBuf, 64)
err_code = _sdk.CameraSetFriendlyName(hCamera, pNameBuf)
SetLastError(err_code)
return err_code
def CameraSdkGetVersionString():
pVersionString = create_string_buffer(64)
err_code = _sdk.CameraSdkGetVersionString(pVersionString)
SetLastError(err_code)
return _string_buffer_to_str(pVersionString)
def CameraCheckFwUpdate(hCamera):
pNeedUpdate = c_int()
err_code = _sdk.CameraCheckFwUpdate(hCamera, byref(pNeedUpdate))
SetLastError(err_code)
return pNeedUpdate.value
def CameraGetFirmwareVersion(hCamera):
pVersion = create_string_buffer(64)
err_code = _sdk.CameraGetFirmwareVersion(hCamera, pVersion)
SetLastError(err_code)
return _string_buffer_to_str(pVersion)
def CameraGetEnumInfo(hCamera):
pCameraInfo = tSdkCameraDevInfo()
err_code = _sdk.CameraGetEnumInfo(hCamera, byref(pCameraInfo))
SetLastError(err_code)
return pCameraInfo
def CameraGetInerfaceVersion(hCamera):
pVersion = create_string_buffer(64)
err_code = _sdk.CameraGetInerfaceVersion(hCamera, pVersion)
SetLastError(err_code)
return _string_buffer_to_str(pVersion)
def CameraSetIOState(hCamera, iOutputIOIndex, uState):
err_code = _sdk.CameraSetIOState(hCamera, iOutputIOIndex, uState)
SetLastError(err_code)
return err_code
def CameraGetIOState(hCamera, iInputIOIndex):
puState = c_int()
err_code = _sdk.CameraGetIOState(hCamera, iInputIOIndex, byref(puState))
SetLastError(err_code)
return puState.value
def CameraSetInPutIOMode(hCamera, iInputIOIndex, iMode):
err_code = _sdk.CameraSetInPutIOMode(hCamera, iInputIOIndex, iMode)
SetLastError(err_code)
return err_code
def CameraSetOutPutIOMode(hCamera, iOutputIOIndex, iMode):
err_code = _sdk.CameraSetOutPutIOMode(hCamera, iOutputIOIndex, iMode)
SetLastError(err_code)
return err_code
def CameraSetOutPutPWM(hCamera, iOutputIOIndex, iCycle, uDuty):
err_code = _sdk.CameraSetOutPutPWM(hCamera, iOutputIOIndex, iCycle, uDuty)
SetLastError(err_code)
return err_code
def CameraSetAeAlgorithm(hCamera, iIspProcessor, iAeAlgorithmSel):
err_code = _sdk.CameraSetAeAlgorithm(hCamera, iIspProcessor, iAeAlgorithmSel)
SetLastError(err_code)
return err_code
def CameraGetAeAlgorithm(hCamera, iIspProcessor):
piAlgorithmSel = c_int()
err_code = _sdk.CameraGetAeAlgorithm(hCamera, iIspProcessor, byref(piAlgorithmSel))
SetLastError(err_code)
return piAlgorithmSel.value
def CameraSetBayerDecAlgorithm(hCamera, iIspProcessor, iAlgorithmSel):
err_code = _sdk.CameraSetBayerDecAlgorithm(hCamera, iIspProcessor, iAlgorithmSel)
SetLastError(err_code)
return err_code
def CameraGetBayerDecAlgorithm(hCamera, iIspProcessor):
piAlgorithmSel = c_int()
err_code = _sdk.CameraGetBayerDecAlgorithm(hCamera, iIspProcessor, byref(piAlgorithmSel))
SetLastError(err_code)
return piAlgorithmSel.value
def CameraSetIspProcessor(hCamera, iIspProcessor):
err_code = _sdk.CameraSetIspProcessor(hCamera, iIspProcessor)
SetLastError(err_code)
return err_code
def CameraGetIspProcessor(hCamera):
piIspProcessor = c_int()
err_code = _sdk.CameraGetIspProcessor(hCamera, byref(piIspProcessor))
SetLastError(err_code)
return piIspProcessor.value
def CameraSetBlackLevel(hCamera, iBlackLevel):
err_code = _sdk.CameraSetBlackLevel(hCamera, iBlackLevel)
SetLastError(err_code)
return err_code
def CameraGetBlackLevel(hCamera):
piBlackLevel = c_int()
err_code = _sdk.CameraGetBlackLevel(hCamera, byref(piBlackLevel))
SetLastError(err_code)
return piBlackLevel.value
def CameraSetWhiteLevel(hCamera, iWhiteLevel):
err_code = _sdk.CameraSetWhiteLevel(hCamera, iWhiteLevel)
SetLastError(err_code)
return err_code
def CameraGetWhiteLevel(hCamera):
piWhiteLevel = c_int()
err_code = _sdk.CameraGetWhiteLevel(hCamera, byref(piWhiteLevel))
SetLastError(err_code)
return piWhiteLevel.value
def CameraSetIspOutFormat(hCamera, uFormat):
err_code = _sdk.CameraSetIspOutFormat(hCamera, uFormat)
SetLastError(err_code)
return err_code
def CameraGetIspOutFormat(hCamera):
puFormat = c_int()
err_code = _sdk.CameraGetIspOutFormat(hCamera, byref(puFormat))
SetLastError(err_code)
return puFormat.value
def CameraGetErrorString(iStatusCode):
_sdk.CameraGetErrorString.restype = c_char_p
msg = _sdk.CameraGetErrorString(iStatusCode)
if msg:
return _string_buffer_to_str(msg)
else:
return ''
def CameraGetImageBufferEx2(hCamera, pImageData, uOutFormat, wTimes):
piWidth = c_int()
piHeight = c_int()
err_code = _sdk.CameraGetImageBufferEx2(hCamera, c_void_p(pImageData), uOutFormat, byref(piWidth), byref(piHeight), wTimes)
SetLastError(err_code)
if err_code != 0:
raise CameraException(err_code)
return (piWidth.value, piHeight.value)
def CameraGetImageBufferEx3(hCamera, pImageData, uOutFormat, wTimes):
piWidth = c_int()
piHeight = c_int()
puTimeStamp = c_int()
err_code = _sdk.CameraGetImageBufferEx3(hCamera, c_void_p(pImageData), uOutFormat, byref(piWidth), byref(piHeight), byref(puTimeStamp), wTimes)
SetLastError(err_code)
if err_code != 0:
raise CameraException(err_code)
return (piWidth.value, piHeight.value, puTimeStamp.value)
def CameraGetCapabilityEx2(hCamera):
pMaxWidth = c_int()
pMaxHeight = c_int()
pbColorCamera = c_int()
err_code = _sdk.CameraGetCapabilityEx2(hCamera, byref(pMaxWidth), byref(pMaxHeight), byref(pbColorCamera))
SetLastError(err_code)
return (pMaxWidth.value, pMaxHeight.value, pbColorCamera.value)
def CameraReConnect(hCamera):
err_code = _sdk.CameraReConnect(hCamera)
SetLastError(err_code)
return err_code
def CameraConnectTest(hCamera):
err_code = _sdk.CameraConnectTest(hCamera)
SetLastError(err_code)
return err_code
def CameraSetLedEnable(hCamera, index, enable):
err_code = _sdk.CameraSetLedEnable(hCamera, index, enable)
SetLastError(err_code)
return err_code
def CameraGetLedEnable(hCamera, index):
enable = c_int()
err_code = _sdk.CameraGetLedEnable(hCamera, index, byref(enable))
SetLastError(err_code)
return enable.value
def CameraSetLedOnOff(hCamera, index, onoff):
err_code = _sdk.CameraSetLedOnOff(hCamera, index, onoff)
SetLastError(err_code)
return err_code
def CameraGetLedOnOff(hCamera, index):
onoff = c_int()
err_code = _sdk.CameraGetLedOnOff(hCamera, index, byref(onoff))
SetLastError(err_code)
return onoff.value
def CameraSetLedDuration(hCamera, index, duration):
err_code = _sdk.CameraSetLedDuration(hCamera, index, duration)
SetLastError(err_code)
return err_code
def CameraGetLedDuration(hCamera, index):
duration = c_uint()
err_code = _sdk.CameraGetLedDuration(hCamera, index, byref(duration))
SetLastError(err_code)
return duration.value
def CameraSetLedBrightness(hCamera, index, uBrightness):
err_code = _sdk.CameraSetLedBrightness(hCamera, index, uBrightness)
SetLastError(err_code)
return err_code
def CameraGetLedBrightness(hCamera, index):
uBrightness = c_uint()
err_code = _sdk.CameraGetLedBrightness(hCamera, index, byref(uBrightness))
SetLastError(err_code)
return uBrightness.value
def CameraEnableTransferRoi(hCamera, uEnableMask):
err_code = _sdk.CameraEnableTransferRoi(hCamera, uEnableMask)
SetLastError(err_code)
return err_code
def CameraSetTransferRoi(hCamera, index, X1, Y1, X2, Y2):
err_code = _sdk.CameraSetTransferRoi(hCamera, index, X1, Y1, X2, Y2)
SetLastError(err_code)
return err_code
def CameraGetTransferRoi(hCamera, index):
pX1 = c_uint()
pY1 = c_uint()
pX2 = c_uint()
pY2 = c_uint()
err_code = _sdk.CameraGetTransferRoi(hCamera, index, byref(pX1), byref(pY1), byref(pX2), byref(pY2))
SetLastError(err_code)
return (pX1.value, pY1.value, pX2.value, pY2.value)
def CameraAlignMalloc(size, align = 16):
_sdk.CameraAlignMalloc.restype = c_void_p
r = _sdk.CameraAlignMalloc(size, align)
return r
def CameraAlignFree(membuffer):
_sdk.CameraAlignFree(c_void_p(membuffer))
def CameraSetAutoConnect(hCamera, bEnable):
err_code = _sdk.CameraSetAutoConnect(hCamera, bEnable)
SetLastError(err_code)
return err_code
def CameraGetAutoConnect(hCamera):
pbEnable = c_int()
err_code = _sdk.CameraGetAutoConnect(hCamera, byref(pbEnable))
SetLastError(err_code)
return pbEnable.value
def CameraGetReConnectCounts(hCamera):
puCounts = c_int()
err_code = _sdk.CameraGetReConnectCounts(hCamera, byref(puCounts))
SetLastError(err_code)
return puCounts.value
def CameraSetSingleGrabMode(hCamera, bEnable):
err_code = _sdk.CameraSetSingleGrabMode(hCamera, bEnable)
SetLastError(err_code)
return err_code
def CameraGetSingleGrabMode(hCamera):
pbEnable = c_int()
err_code = _sdk.CameraGetSingleGrabMode(hCamera, byref(pbEnable))
SetLastError(err_code)
return pbEnable.value
def CameraRestartGrab(hCamera):
err_code = _sdk.CameraRestartGrab(hCamera)
SetLastError(err_code)
return err_code
def CameraEvaluateImageDefinition(hCamera, iAlgorithSel, pbyIn, pFrInfo):
DefinitionValue = c_double()
err_code = _sdk.CameraEvaluateImageDefinition(hCamera, iAlgorithSel, c_void_p(pbyIn), byref(pFrInfo), byref(DefinitionValue))
SetLastError(err_code)
return DefinitionValue.value
def CameraDrawText(pRgbBuffer, pFrInfo, pFontFileName, FontWidth, FontHeight, pText, Left, Top, Width, Height, TextColor, uFlags):
err_code = _sdk.CameraDrawText(c_void_p(pRgbBuffer), byref(pFrInfo), _str_to_string_buffer(pFontFileName), FontWidth, FontHeight, _str_to_string_buffer(pText), Left, Top, Width, Height, TextColor, uFlags)
SetLastError(err_code)
return err_code
def CameraGigeGetIp(pCameraInfo):
CamIp = create_string_buffer(32)
CamMask = create_string_buffer(32)
CamGateWay = create_string_buffer(32)
EtIp = create_string_buffer(32)
EtMask = create_string_buffer(32)
EtGateWay = create_string_buffer(32)
err_code = _sdk.CameraGigeGetIp(byref(pCameraInfo), CamIp, CamMask, CamGateWay, EtIp, EtMask, EtGateWay)
SetLastError(err_code)
return (_string_buffer_to_str(CamIp), _string_buffer_to_str(CamMask), _string_buffer_to_str(CamGateWay),
_string_buffer_to_str(EtIp), _string_buffer_to_str(EtMask), _string_buffer_to_str(EtGateWay) )
def CameraGigeSetIp(pCameraInfo, Ip, SubMask, GateWay, bPersistent):
err_code = _sdk.CameraGigeSetIp(byref(pCameraInfo),
_str_to_string_buffer(Ip), _str_to_string_buffer(SubMask), _str_to_string_buffer(GateWay), bPersistent)
SetLastError(err_code)
return err_code
def CameraGigeGetMac(pCameraInfo):
CamMac = create_string_buffer(32)
EtMac = create_string_buffer(32)
err_code = _sdk.CameraGigeGetMac(byref(pCameraInfo), CamMac, EtMac)
SetLastError(err_code)
return (_string_buffer_to_str(CamMac), _string_buffer_to_str(EtMac) )
def CameraEnableFastResponse(hCamera):
err_code = _sdk.CameraEnableFastResponse(hCamera)
SetLastError(err_code)
return err_code
def CameraSetCorrectDeadPixel(hCamera, bEnable):
err_code = _sdk.CameraSetCorrectDeadPixel(hCamera, bEnable)
SetLastError(err_code)
return err_code
def CameraGetCorrectDeadPixel(hCamera):
pbEnable = c_int()
err_code = _sdk.CameraGetCorrectDeadPixel(hCamera, byref(pbEnable))
SetLastError(err_code)
return pbEnable.value
def CameraFlatFieldingCorrectSetEnable(hCamera, bEnable):
err_code = _sdk.CameraFlatFieldingCorrectSetEnable(hCamera, bEnable)
SetLastError(err_code)
return err_code
def CameraFlatFieldingCorrectGetEnable(hCamera):
pbEnable = c_int()
err_code = _sdk.CameraFlatFieldingCorrectGetEnable(hCamera, byref(pbEnable))
SetLastError(err_code)
return pbEnable.value
def CameraFlatFieldingCorrectSetParameter(hCamera, pDarkFieldingImage, pDarkFieldingFrInfo, pLightFieldingImage, pLightFieldingFrInfo):
err_code = _sdk.CameraFlatFieldingCorrectSetParameter(hCamera, c_void_p(pDarkFieldingImage), byref(pDarkFieldingFrInfo), c_void_p(pLightFieldingImage), byref(pLightFieldingFrInfo))
SetLastError(err_code)
return err_code
def CameraFlatFieldingCorrectGetParameterState(hCamera):
pbValid = c_int()
pFilePath = create_string_buffer(1024)
err_code = _sdk.CameraFlatFieldingCorrectGetParameterState(hCamera, byref(pbValid), pFilePath)
SetLastError(err_code)
return (pbValid.value, _string_buffer_to_str(pFilePath) )
def CameraFlatFieldingCorrectSaveParameterToFile(hCamera, pszFileName):
err_code = _sdk.CameraFlatFieldingCorrectSaveParameterToFile(hCamera, _str_to_string_buffer(pszFileName))
SetLastError(err_code)
return err_code
def CameraFlatFieldingCorrectLoadParameterFromFile(hCamera, pszFileName):
err_code = _sdk.CameraFlatFieldingCorrectLoadParameterFromFile(hCamera, _str_to_string_buffer(pszFileName))
SetLastError(err_code)
return err_code
def CameraCommonCall(hCamera, pszCall, uResultBufSize):
pszResult = create_string_buffer(uResultBufSize) if uResultBufSize > 0 else None
err_code = _sdk.CameraCommonCall(hCamera, _str_to_string_buffer(pszCall), pszResult, uResultBufSize)
SetLastError(err_code)
return _string_buffer_to_str(pszResult) if pszResult else ''
def CameraSetDenoise3DParams(hCamera, bEnable, nCount, Weights):
assert(nCount >= 2 and nCount <= 8)
if Weights:
assert(len(Weights) == nCount)
WeightsNative = (c_float * nCount)(*Weights)
else:
WeightsNative = None
err_code = _sdk.CameraSetDenoise3DParams(hCamera, bEnable, nCount, WeightsNative)
SetLastError(err_code)
return err_code
def CameraGetDenoise3DParams(hCamera):
bEnable = c_int()
nCount = c_int()
bUseWeight = c_int()
Weights = (c_float * 8)()
err_code = _sdk.CameraGetDenoise3DParams(hCamera, byref(bEnable), byref(nCount), byref(bUseWeight), Weights)
SetLastError(err_code)
bEnable, nCount, bUseWeight = bEnable.value, nCount.value, bUseWeight.value
if bUseWeight:
Weights = Weights[:nCount]
else:
Weights = None
return (bEnable, nCount, bUseWeight, Weights)
def CameraManualDenoise3D(InFramesHead, InFramesData, nCount, Weights, OutFrameHead, OutFrameData):
assert(nCount > 0)
assert(len(InFramesData) == nCount)
assert(Weights is None or len(Weights) == nCount)
InFramesDataNative = (c_void_p * nCount)(*InFramesData)
WeightsNative = (c_float * nCount)(*Weights) if Weights else None
err_code = _sdk.CameraManualDenoise3D(byref(InFramesHead), InFramesDataNative, nCount, WeightsNative, byref(OutFrameHead), c_void_p(OutFrameData))
SetLastError(err_code)
return err_code
def CameraCustomizeDeadPixels(hCamera, hParent):
err_code = _sdk.CameraCustomizeDeadPixels(hCamera, hParent)
SetLastError(err_code)
return err_code
def CameraReadDeadPixels(hCamera):
pNumPixel = c_int()
err_code = _sdk.CameraReadDeadPixels(hCamera, None, None, byref(pNumPixel))
SetLastError(err_code)
if pNumPixel.value < 1:
return None
UShortArray = c_ushort * pNumPixel.value
pRows = UShortArray()
pCols = UShortArray()
err_code = _sdk.CameraReadDeadPixels(hCamera, pRows, pCols, byref(pNumPixel))
SetLastError(err_code)
if err_code == 0:
pNumPixel = pNumPixel.value
else:
pNumPixel = 0
return (pRows[:pNumPixel], pCols[:pNumPixel])
def CameraAddDeadPixels(hCamera, pRows, pCols, NumPixel):
UShortArray = c_ushort * NumPixel
pRowsNative = UShortArray(*pRows)
pColsNative = UShortArray(*pCols)
err_code = _sdk.CameraAddDeadPixels(hCamera, pRowsNative, pColsNative, NumPixel)
SetLastError(err_code)
return err_code
def CameraRemoveDeadPixels(hCamera, pRows, pCols, NumPixel):
UShortArray = c_ushort * NumPixel
pRowsNative = UShortArray(*pRows)
pColsNative = UShortArray(*pCols)
err_code = _sdk.CameraRemoveDeadPixels(hCamera, pRowsNative, pColsNative, NumPixel)
SetLastError(err_code)
return err_code
def CameraRemoveAllDeadPixels(hCamera):
err_code = _sdk.CameraRemoveAllDeadPixels(hCamera)
SetLastError(err_code)
return err_code
def CameraSaveDeadPixels(hCamera):
err_code = _sdk.CameraSaveDeadPixels(hCamera)
SetLastError(err_code)
return err_code
def CameraSaveDeadPixelsToFile(hCamera, sFileName):
err_code = _sdk.CameraSaveDeadPixelsToFile(hCamera, _str_to_string_buffer(sFileName))
SetLastError(err_code)
return err_code
def CameraLoadDeadPixelsFromFile(hCamera, sFileName):
err_code = _sdk.CameraLoadDeadPixelsFromFile(hCamera, _str_to_string_buffer(sFileName))
SetLastError(err_code)
return err_code
def CameraGetImageBufferPriority(hCamera, wTimes, Priority):
pFrameInfo = tSdkFrameHead()
pbyBuffer = c_void_p()
err_code = _sdk.CameraGetImageBufferPriority(hCamera, byref(pFrameInfo), byref(pbyBuffer), wTimes, Priority)
SetLastError(err_code)
if err_code != 0:
raise CameraException(err_code)
return (pbyBuffer.value, pFrameInfo)
def CameraGetImageBufferPriorityEx(hCamera, wTimes, Priority):
_sdk.CameraGetImageBufferPriorityEx.restype = c_void_p
piWidth = c_int()
piHeight = c_int()
pFrameBuffer = _sdk.CameraGetImageBufferPriorityEx(hCamera, byref(piWidth), byref(piHeight), wTimes, Priority)
err_code = CAMERA_STATUS_SUCCESS if pFrameBuffer else CAMERA_STATUS_TIME_OUT
SetLastError(err_code)
if pFrameBuffer:
return (pFrameBuffer, piWidth.value, piHeight.value)
else:
raise CameraException(err_code)
def CameraGetImageBufferPriorityEx2(hCamera, pImageData, uOutFormat, wTimes, Priority):
piWidth = c_int()
piHeight = c_int()
err_code = _sdk.CameraGetImageBufferPriorityEx2(hCamera, c_void_p(pImageData), uOutFormat, byref(piWidth), byref(piHeight), wTimes, Priority)
SetLastError(err_code)
if err_code != 0:
raise CameraException(err_code)
return (piWidth.value, piHeight.value)
def CameraGetImageBufferPriorityEx3(hCamera, pImageData, uOutFormat, wTimes, Priority):
piWidth = c_int()
piHeight = c_int()
puTimeStamp = c_uint()
err_code = _sdk.CameraGetImageBufferPriorityEx3(hCamera, c_void_p(pImageData), uOutFormat, byref(piWidth), byref(piHeight), byref(puTimeStamp), wTimes, Priority)
SetLastError(err_code)
if err_code != 0:
raise CameraException(err_code)
return (piWidth.value, piHeight.value, puTimeStamp.value)
def CameraClearBuffer(hCamera):
err_code = _sdk.CameraClearBuffer(hCamera)
SetLastError(err_code)
return err_code
def CameraSoftTriggerEx(hCamera, uFlags):
err_code = _sdk.CameraSoftTriggerEx(hCamera, uFlags)
SetLastError(err_code)
return err_code
def CameraSetHDR(hCamera, value):
err_code = _sdk.CameraSetHDR(hCamera, value)
SetLastError(err_code)
return err_code
def CameraGetHDR(hCamera):
value = c_int()
err_code = _sdk.CameraGetHDR(hCamera, byref(value))
SetLastError(err_code)
return value.value
def CameraGetFrameID(hCamera):
FrameID = c_uint()
err_code = _sdk.CameraGetFrameID(hCamera, byref(FrameID))
SetLastError(err_code)
return FrameID.value
def CameraGetFrameTimeStamp(hCamera):
TimeStamp = c_uint64()
TimeStampL = c_uint32.from_buffer(TimeStamp)
TimeStampH = c_uint32.from_buffer(TimeStamp, 4)
err_code = _sdk.CameraGetFrameTimeStamp(hCamera, byref(TimeStampL), byref(TimeStampH))
SetLastError(err_code)
return TimeStamp.value
def CameraSetHDRGainMode(hCamera, value):
err_code = _sdk.CameraSetHDRGainMode(hCamera, value)
SetLastError(err_code)
return err_code
def CameraGetHDRGainMode(hCamera):
value = c_int()
err_code = _sdk.CameraGetHDRGainMode(hCamera, byref(value))
SetLastError(err_code)
return value.value
def CameraCreateDIBitmap(hDC, pFrameBuffer, pFrameHead):
outBitmap = c_void_p()
err_code = _sdk.CameraCreateDIBitmap(hDC, c_void_p(pFrameBuffer), byref(pFrameHead), byref(outBitmap))
SetLastError(err_code)
return outBitmap.value
def CameraDrawFrameBuffer(pFrameBuffer, pFrameHead, hWnd, Algorithm, Mode):
err_code = _sdk.CameraDrawFrameBuffer(c_void_p(pFrameBuffer), byref(pFrameHead), c_void_p(hWnd), Algorithm, Mode)
SetLastError(err_code)
return err_code
def CameraFlipFrameBuffer(pFrameBuffer, pFrameHead, Flags):
err_code = _sdk.CameraFlipFrameBuffer(c_void_p(pFrameBuffer), byref(pFrameHead), Flags)
SetLastError(err_code)
return err_code
def CameraConvertFrameBufferFormat(hCamera, pInFrameBuffer, pOutFrameBuffer, outWidth, outHeight, outMediaType, pFrameHead):
err_code = _sdk.CameraConvertFrameBufferFormat(hCamera, c_void_p(pInFrameBuffer), c_void_p(pOutFrameBuffer), outWidth, outHeight, outMediaType, byref(pFrameHead))
SetLastError(err_code)
return err_code
def CameraSetConnectionStatusCallback(hCamera, pCallBack, pContext = 0):
err_code = _sdk.CameraSetConnectionStatusCallback(hCamera, pCallBack, c_void_p(pContext) )
SetLastError(err_code)
return err_code
def CameraSetLightingControllerMode(hCamera, index, mode):
err_code = _sdk.CameraSetLightingControllerMode(hCamera, index, mode)
SetLastError(err_code)
return err_code
def CameraSetLightingControllerState(hCamera, index, state):
err_code = _sdk.CameraSetLightingControllerState(hCamera, index, state)
SetLastError(err_code)
return err_code
def CameraSetFrameResendCount(hCamera, count):
err_code = _sdk.CameraSetFrameResendCount(hCamera, count)
SetLastError(err_code)
return err_code
def CameraSetUndistortParams(hCamera, width, height, cameraMatrix, distCoeffs):
assert(len(cameraMatrix) == 4)
assert(len(distCoeffs) == 5)
cameraMatrixNative = (c_double * len(cameraMatrix))(*cameraMatrix)
distCoeffsNative = (c_double * len(distCoeffs))(*distCoeffs)
err_code = _sdk.CameraSetUndistortParams(hCamera, width, height, cameraMatrixNative, distCoeffsNative)
SetLastError(err_code)
return err_code
def CameraGetUndistortParams(hCamera):
width = c_int()
height = c_int()
cameraMatrix = (c_double * 4)()
distCoeffs = (c_double * 5)()
err_code = _sdk.CameraGetUndistortParams(hCamera, byref(width), byref(height), cameraMatrix, distCoeffs)
SetLastError(err_code)
width, height = width.value, height.value
cameraMatrix = cameraMatrix[:]
distCoeffs = distCoeffs[:]
return (width, height, cameraMatrix, distCoeffs)
def CameraSetUndistortEnable(hCamera, bEnable):
err_code = _sdk.CameraSetUndistortEnable(hCamera, bEnable)
SetLastError(err_code)
return err_code
def CameraGetUndistortEnable(hCamera):
value = c_int()
err_code = _sdk.CameraGetUndistortEnable(hCamera, byref(value))
SetLastError(err_code)
return value.value
def CameraCustomizeUndistort(hCamera, hParent):
err_code = _sdk.CameraCustomizeUndistort(hCamera, hParent)
SetLastError(err_code)
return err_code
def CameraGetEyeCount(hCamera):
EyeCount = c_int()
err_code = _sdk.CameraGetEyeCount(hCamera, byref(EyeCount))
SetLastError(err_code)
return EyeCount.value
def CameraMultiEyeImageProcess(hCamera, iEyeIndex, pbyIn, pInFrInfo, pbyOut, pOutFrInfo, uOutFormat, uReserved):
err_code = _sdk.CameraMultiEyeImageProcess(hCamera, iEyeIndex, c_void_p(pbyIn), byref(pInFrInfo), c_void_p(pbyOut), byref(pOutFrInfo), uOutFormat, uReserved)
SetLastError(err_code)
return err_code
# CameraGrabber
def CameraGrabber_CreateFromDevicePage():
Grabber = c_void_p()
err_code = _sdk.CameraGrabber_CreateFromDevicePage(byref(Grabber))
SetLastError(err_code)
if err_code != 0:
raise CameraException(err_code)
return Grabber.value
def CameraGrabber_CreateByIndex(Index):
Grabber = c_void_p()
err_code = _sdk.CameraGrabber_CreateByIndex(byref(Grabber), Index)
SetLastError(err_code)
if err_code != 0:
raise CameraException(err_code)
return Grabber.value
def CameraGrabber_CreateByName(Name):
Grabber = c_void_p()
err_code = _sdk.CameraGrabber_CreateByName(byref(Grabber), _str_to_string_buffer(Name))
SetLastError(err_code)
if err_code != 0:
raise CameraException(err_code)
return Grabber.value
def CameraGrabber_Create(pDevInfo):
Grabber = c_void_p()
err_code = _sdk.CameraGrabber_Create(byref(Grabber), byref(pDevInfo))
SetLastError(err_code)
if err_code != 0:
raise CameraException(err_code)
return Grabber.value
def CameraGrabber_Destroy(Grabber):
err_code = _sdk.CameraGrabber_Destroy(c_void_p(Grabber))
SetLastError(err_code)
return err_code
def CameraGrabber_SetHWnd(Grabber, hWnd):
err_code = _sdk.CameraGrabber_SetHWnd(c_void_p(Grabber), c_void_p(hWnd) )
SetLastError(err_code)
return err_code
def CameraGrabber_SetPriority(Grabber, Priority):
err_code = _sdk.CameraGrabber_SetPriority(c_void_p(Grabber), Priority)
SetLastError(err_code)
return err_code
def CameraGrabber_StartLive(Grabber):
err_code = _sdk.CameraGrabber_StartLive(c_void_p(Grabber))
SetLastError(err_code)
return err_code
def CameraGrabber_StopLive(Grabber):
err_code = _sdk.CameraGrabber_StopLive(c_void_p(Grabber))
SetLastError(err_code)
return err_code
def CameraGrabber_SaveImage(Grabber, TimeOut):
Image = c_void_p()
err_code = _sdk.CameraGrabber_SaveImage(c_void_p(Grabber), byref(Image), TimeOut)
SetLastError(err_code)
if err_code != 0:
raise CameraException(err_code)
return Image.value
def CameraGrabber_SaveImageAsync(Grabber):
err_code = _sdk.CameraGrabber_SaveImageAsync(c_void_p(Grabber))
SetLastError(err_code)
return err_code
def CameraGrabber_SaveImageAsyncEx(Grabber, UserData):
err_code = _sdk.CameraGrabber_SaveImageAsyncEx(c_void_p(Grabber), c_void_p(UserData))
SetLastError(err_code)
return err_code
def CameraGrabber_SetSaveImageCompleteCallback(Grabber, Callback, Context = 0):
err_code = _sdk.CameraGrabber_SetSaveImageCompleteCallback(c_void_p(Grabber), Callback, c_void_p(Context))
SetLastError(err_code)
return err_code
def CameraGrabber_SetFrameListener(Grabber, Listener, Context = 0):
err_code = _sdk.CameraGrabber_SetFrameListener(c_void_p(Grabber), Listener, c_void_p(Context))
SetLastError(err_code)
return err_code
def CameraGrabber_SetRawCallback(Grabber, Callback, Context = 0):
err_code = _sdk.CameraGrabber_SetRawCallback(c_void_p(Grabber), Callback, c_void_p(Context))
SetLastError(err_code)
return err_code
def CameraGrabber_SetRGBCallback(Grabber, Callback, Context = 0):
err_code = _sdk.CameraGrabber_SetRGBCallback(c_void_p(Grabber), Callback, c_void_p(Context))
SetLastError(err_code)
return err_code
def CameraGrabber_GetCameraHandle(Grabber):
hCamera = c_int()
err_code = _sdk.CameraGrabber_GetCameraHandle(c_void_p(Grabber), byref(hCamera))
SetLastError(err_code)
return hCamera.value
def CameraGrabber_GetStat(Grabber):
stat = tSdkGrabberStat()
err_code = _sdk.CameraGrabber_GetStat(c_void_p(Grabber), byref(stat))
SetLastError(err_code)
return stat
def CameraGrabber_GetCameraDevInfo(Grabber):
DevInfo = tSdkCameraDevInfo()
err_code = _sdk.CameraGrabber_GetCameraDevInfo(c_void_p(Grabber), byref(DevInfo))
SetLastError(err_code)
return DevInfo
# CameraImage
def CameraImage_Create(pFrameBuffer, pFrameHead, bCopy):
Image = c_void_p()
err_code = _sdk.CameraImage_Create(byref(Image), c_void_p(pFrameBuffer), byref(pFrameHead), bCopy)
SetLastError(err_code)
return Image.value
def CameraImage_CreateEmpty():
Image = c_void_p()
err_code = _sdk.CameraImage_CreateEmpty(byref(Image))
SetLastError(err_code)
return Image.value
def CameraImage_Destroy(Image):
err_code = _sdk.CameraImage_Destroy(c_void_p(Image))
SetLastError(err_code)
return err_code
def CameraImage_GetData(Image):
DataBuffer = c_void_p()
HeadPtr = c_void_p()
err_code = _sdk.CameraImage_GetData(c_void_p(Image), byref(DataBuffer), byref(HeadPtr))
SetLastError(err_code)
if err_code == 0:
return (DataBuffer.value, tSdkFrameHead.from_address(HeadPtr.value) )
else:
return (0, None)
def CameraImage_GetUserData(Image):
UserData = c_void_p()
err_code = _sdk.CameraImage_GetUserData(c_void_p(Image), byref(UserData))
SetLastError(err_code)
return UserData.value
def CameraImage_SetUserData(Image, UserData):
err_code = _sdk.CameraImage_SetUserData(c_void_p(Image), c_void_p(UserData))
SetLastError(err_code)
return err_code
def CameraImage_IsEmpty(Image):
IsEmpty = c_int()
err_code = _sdk.CameraImage_IsEmpty(c_void_p(Image), byref(IsEmpty))
SetLastError(err_code)
return IsEmpty.value
def CameraImage_Draw(Image, hWnd, Algorithm):
err_code = _sdk.CameraImage_Draw(c_void_p(Image), c_void_p(hWnd), Algorithm)
SetLastError(err_code)
return err_code
def CameraImage_DrawFit(Image, hWnd, Algorithm):
err_code = _sdk.CameraImage_DrawFit(c_void_p(Image), c_void_p(hWnd), Algorithm)
SetLastError(err_code)
return err_code
def CameraImage_DrawToDC(Image, hDC, Algorithm, xDst, yDst, cxDst, cyDst):
err_code = _sdk.CameraImage_DrawToDC(c_void_p(Image), c_void_p(hDC), Algorithm, xDst, yDst, cxDst, cyDst)
SetLastError(err_code)
return err_code
def CameraImage_DrawToDCFit(Image, hDC, Algorithm, xDst, yDst, cxDst, cyDst):
err_code = _sdk.CameraImage_DrawToDCFit(c_void_p(Image), c_void_p(hDC), Algorithm, xDst, yDst, cxDst, cyDst)
SetLastError(err_code)
return err_code
def CameraImage_BitBlt(Image, hWnd, xDst, yDst, cxDst, cyDst, xSrc, ySrc):
err_code = _sdk.CameraImage_BitBlt(c_void_p(Image), c_void_p(hWnd), xDst, yDst, cxDst, cyDst, xSrc, ySrc)
SetLastError(err_code)
return err_code
def CameraImage_BitBltToDC(Image, hDC, xDst, yDst, cxDst, cyDst, xSrc, ySrc):
err_code = _sdk.CameraImage_BitBltToDC(c_void_p(Image), c_void_p(hDC), xDst, yDst, cxDst, cyDst, xSrc, ySrc)
SetLastError(err_code)
return err_code
def CameraImage_SaveAsBmp(Image, FileName):
err_code = _sdk.CameraImage_SaveAsBmp(c_void_p(Image), _str_to_string_buffer(FileName))
SetLastError(err_code)
return err_code
def CameraImage_SaveAsJpeg(Image, FileName, Quality):
err_code = _sdk.CameraImage_SaveAsJpeg(c_void_p(Image), _str_to_string_buffer(FileName), Quality)
SetLastError(err_code)
return err_code
def CameraImage_SaveAsPng(Image, FileName):
err_code = _sdk.CameraImage_SaveAsPng(c_void_p(Image), _str_to_string_buffer(FileName))
SetLastError(err_code)
return err_code
def CameraImage_SaveAsRaw(Image, FileName, Format):
err_code = _sdk.CameraImage_SaveAsRaw(c_void_p(Image), _str_to_string_buffer(FileName), Format)
SetLastError(err_code)
return err_code
def CameraImage_IPicture(Image):
NewPic = c_void_p()
err_code = _sdk.CameraImage_IPicture(c_void_p(Image), byref(NewPic))
SetLastError(err_code)
return NewPic.value