Skip to main content

Smart Vision SDK for Python

tip

使用smart vision sdk,需要先导入smartvisionsdk package:

from pysmartvision import smartvisionsdk

Python API预览

类(class)公共成员函数(public member function)类型(Type)描述(Description)
Cameraopen(GetImageCB)function以无参模式打开相机
open(DeviceParam, GetImageCB)function以有参模式打开相机
start_capture()function打开流开关
stop_capture()function关闭流开关
DeviceParamcfg_namestr带路径的参数配置文件名
Imagedatastr指向存放数据的缓冲区的指针
wint目标图片宽度
hint目标图片高度
cint目标图片的通道(通常为3)
lengthint图片数据所占内存长度
IOConfigng_keeptimeint信号持续时间
do1SignalType管脚1
do2SignalType管脚1
TcpConfigipstrIP地址
portint端口号
SVSdkMemfdInfosrcYPlaneStrideintYUV数据的宽
srcSliceHeightintYUV数据的高
memCopyStartIndexintStart index值(注:Start index的值与End index相等)
memCopyEndIndexintEnd index值
planeOffsetintYUV偏移值
公共函数(public function)描述(Description)
set_log_level(SVLogLevel log_level)设置日志级别
set_log_destination(str destinationPath, bool also_to_stderr)设置日志文件名及路径
log_to_stderr()设置日志输出到终端。一旦设置则不会再保存日志文件。一般不建议使用。
GetImageCB(const Image, int)作为open()函数的入参,用于获取相片资源。此函数由使用者自定义。接口仅提供类型定义来规范回调函数的定义。
get_signal_sending_mode(IOConfig, TcpConfig)获取信号输出配置信息。需根据返回值来判断获取的是IO配置还是TCP配置。如返回值是1,则返回的是IO配置,需从iosetting对象获取
set_io_signal_send_mode(SignalType, SignalType, int)设置IO信号输出配置。比如设置do1为NG_SIGNAL,表示管脚1只能发送NG信号。需要注意的是管脚1和管脚2不能同时设置为相同的信号类型(比如都是NG或都是alarm)
set_tcp_signal_send_mode(str, int)设置TCP信号输出配置。所设ip地址和端口为服务器端的ip地址和端口。
set_off_mode()设置OFF关闭信号输出配置。
io_send_ng()IO发送NG信号。
io_send_alarm_raising()IO发送alarm信号。
io_send_alarm_clear()IO发送alarm清除信号。
tcp_send_ng()TCP发送NG信号。
tcp_send_alarm()TCP发送alarm信号。
tcp_send_alarmclear()TCP发送alarm清除信号。
枚举(ENUM)成员变量名(public member variable)类型(Type)描述(Description)
SVLogLevelSINFOint日志级别SINFO
SWARNINGint日志级别SWARNING
SERRORint日志级别SERROR
SFATALint日志级别SFATAL(Smart Vision SDK中未使用此级别)
SignalTypeOFFint关闭信号输出配置
NG_SIGNALintNG信号输出模式
ALARM_SIGNALintalarm信号输出模式

类Camera

实例化类Camera对象相关操作。打开相机、抓图等相关的操作都基于实例化Camera对象

warning

与C++中不同,python代码中无需引入名字空间,而需要使用以下命令在python代码中import模块smartvisionsdk:

from pysmartvision import smartvisionsdk

具体使用方法请参考以下接口。

无参模式打开相机(函数 open)

APIopen(cb)
描述以无参模式打开相机。
参数输入参数为回调函数。回调函数由客户自定义。关于回调函数请参考回调函数
返回值0: 成功。-1: 失败。

举例如下(camera_instance为类Camera的实例化对象,下同):

# 以无参模式打开相机 
camera_instance = smartvisionsdk.Camera()
res = camera_instance.open(get_img_cb)

有参模式打开相机(函数 open)

APIopen(dev_param, cb)
描述以有参模式打开相机。
参数dev_param为类DeviceParam的实例化对象。cb为回调函数。回调函数由客户自定义。关于回调函数请参看回调函数
返回值0: 成功。-1: 失败。

举例如下:

# 以有参模式打开相机
camera_instance = smartvisionsdk.Camera()
res = camera_instance.open(device_param, get_img_cb)

打开流开关(函数 start_capture)

APIstart_capture()
描述打开流开关
参数
返回值

举例如下:

# 打开流开关
camera_instance.start_capture()

关闭流开关(函数 stop_capture)

APIstop_capture()
描述关闭流开关
参数
返回值

举例如下:

# 关闭流开关
camera_instance.stop_capture()

类DeviceParam

定义带路径的参数配置文件名。该参数配置文件用于配置相机参数。因此仅用于有参模式打开相机。

成员变量名类型默认值描述
cfg_namestr带路径的参数配置文件名

设置DeviceParam配置文件

APIset_cfgname(config_file)
描述设置带路径的参数配置文件。 通过这个接口可设置cfg_name变量
参数config_file为相机参数配置文件
返回值

举例如下:

# 设置配置文件
device_param = smartvisionsdk.DeviceParam()
device_param.set_cfgname("./config.json")

类Image

定义图片数据相关信息,包括图片配置信息及指针变量。

成员变量名类型默认值描述
datastr指向存放数据的缓冲区的字符串
wint目标图片宽度
hint目标图片高度
cint目标图片的通道(通常为3)
lengthint图片数据所占内存长度

类IOConfig

定义IO信号输出配置信息。

成员变量名类型默认值描述
ng_keeptimeint信号持续时间
do1SignalType管脚1
do2SignalType管脚2

类TcpConfig

定义TCP信号输出配置信息。

成员变量名类型默认值描述
ipstrIP地址
portint端口号

类SVSdkMemfdInfo

定义数据缓冲区信息。

成员变量名类型默认值描述
srcYPlaneStrideintYUV数据的宽
srcSliceHeightintYUV数据的高
memCopyStartIndexintStart index值(注:Start index的值与End index相等)
memCopyEndIndexintEnd index值
planeOffsetintYUV偏移值

设置日志级别(函数 set_log_level

APIset_log_level(log_level)
描述设置日志级别。
参数log_levelSVLogLevel类型的枚举,关于SVLogLevel请参考枚举SVLogLevel
返回值

举例如下:

# 设置日志级别
smartvisionsdk.set_log_level(smartvisionsdk.SVLogLevel.SINFO)

设置日志文件名及路径(函数 set_log_destination)

APIset_log_destination(destinationPath, also_to_stderr)
描述设置日志文件名及路径
参数destinationPath :带路径的日志文件名,默认值为"./aidclog_smart_vision_"。 also_to_stderr:是否输出到终端,默认值为false
返回值

举例如下:

# 设置日志文件名及路径
log_path = "./aidclog_smart_vision_setting_";
smartvisionsdk.set_log_destination(log_path, False)

设置日志输出到终端(函数 log_to_stderr)

APIlog_to_stderr()
描述设置日志文件名及路径
参数设置日志输出到终端。一旦设置则不会再保存日志文件。一般不建议使用。
返回值

举例如下:

# 设置日志文件名及路径
smartvisionsdk.log_to_stderr()

日志级别(枚举 SVLogLevel)

成员变量名类型默认值描述
SINFOint0日志级别SINFO
SWARNING`int日志级别SWARNING
SERRORint日志级别SERROR
SFATALint日志级别SFATAL(未使用)

回调函数 GetImageCB

APItypedef std::function<int8_t(const Image &, const SVSdkMemfdInfo &)> GetImageCB
描述作为open()函数的入参,用于获取相片资源。此函数由使用者自定义。接口仅提供类型定义来规范回调函数的定义。
参数参数一是类Image 的实例化对象,数据由此传入。参数二是缓冲区类对象,存储包括缓冲区index、YUV数据宽高等
返回值自定义

举例如下:

# 回调函数定义
def get_img_cb(cap_img, mem_info):
......
return 0;

获取信号输出配置信息(函数 get_signal_sending_mode)

APIget_signal_sending_mode(iosetting, tcpsetting)
描述获取信号输出配置信息。需根据返回值来判断获取的是IO配置还是TCP配置。如返回值是1,则返回的是IO配置,需从iosetting对象获取。
参数iosetting:类IOConfig的实例化对象。包含IO输出类的信息。 tcpsetting: 类TcpConfig的实例化对象。包含TCP输出类的信息。
返回值-1:获取配置失败。0: 配置为OFF,即未设置。1: 获取的是IO配置,返回信息从iosetting对象获取。2: 获取的是TCP配置,返回信息从tcpsetting对象获取。

举例如下:

# 获取信号输出配置信息
iosetting = smartvisionsdk.IOConfig()
tcpsetting = smartvisionsdk.TcpConfig()
res = smartvisionsdk.get_signal_sending_mode(iosetting, tcpsetting)

设置IO信号输出配置(函数 set_io_signal_send_mode)

APIset_io_signal_send_mode(do1 , do2 , ng_keeptime)
描述设置IO信号输出配置。比如设置do1为NG_SIGNAL,表示管脚1只能发送NG信号。需要注意的是管脚1和管脚2不能同时设置为相同的信号类型(比如都是NG或都是alarm)
参数do1: 管脚1。 do2: 管脚2。 ng_keeptime: 信号持续时间
返回值-1: 失败。0: 成功

举例如下:

# 设置IO信号输出模式
res = smartvisionsdk.set_io_signal_send_mode(smartvisionsdk.SignalType.NG_SIGNAL, smartvisionsdk.SignalType.ALARM_SIGNAL, 6)

设置TCP信号输出配置(函数 set_tcp_signal_send_mode)

APIset_tcp_signal_send_mode(ip, port)
描述设置TCP信号输出配置。所设ip地址和端口为服务器端的ip地址和端口。
参数ip: 服务器ip地址。port: 服务器端口号
返回值-1: 失败。0: 成功

举例如下:

# 设置TCP信号输出模式
res = smartvisionsdk.set_tcp_signal_send_mode(ip, port)

设置OFF关闭信号输出配置(函数 set_off_mode)

APIset_off_mode()
描述设置OFF关闭信号输出配置。
参数
返回值-1: 失败。0: 成功

举例如下:

# 设置OFF关闭信号输出模式
res = smartvisionsdk.set_off_mode()

IO发送NG信号(函数 io_send_ng)

APIio_send_ng()
描述IO发送NG信号。
参数
返回值-1:失败。0:成功

举例如下:

# IO发送NG信号
res = smartvisionsdk.io_send_ng();

IO发送alarm信号(函数 io_send_alarm_raising)

APIio_send_alarm_raising()
描述IO发送alarm信号。
参数
返回值-1: 失败。0: 成功

举例如下:

# IO发送alarm信号
res = smartvisionsdk.io_send_alarm_raising();

IO发送alarm清除信号(函数 io_send_alarm_clear)

APIio_send_alarm_clear()
描述IO发送alarm清除信号。
参数
返回值-1: 失败。0: 成功

举例如下:

# IO发送alarmclear信号
res = smartvisionsdk.io_send_alarm_clear();

TCP发送NG信号(函数 tcp_send_ng)

APItcp_send_ng()
描述TCP发送NG信号。
参数
返回值-1: 失败。0: 成功

举例如下:

# TCP发送NG信号
res = smartvisionsdk.tcp_send_ng();

TCP发送alarm信号(函数 tcp_send_alarm)

APItcp_send_alarm()
描述TCP发送alarm信号。
参数
返回值-1: 失败。0: 成功

举例如下:

# TCP发送alarm信号
res = smartvisionsdk.tcp_send_alarm();

TCP发送alarm清除信号(函数 tcp_send_alarmclear)

APItcp_send_alarmclear()
描述TCP发送alarm清除信号。
参数
返回值-1: 失败。0: 成功

举例如下:

# TCP发送alarmclear信号
res = smartvisionsdk.tcp_send_alarmclear();

信号类型定义(枚举 SignalType)

成员变量名类型默认值描述
OFFint0关闭信号输出配置
NG_SIGNALintNG信号输出模式
ALARM_SIGNALintAlarm信号输出模式

获取SDK版本信息(函数 get_build_version)

APIget_build_version()
描述获取SDK版本信息。
参数
返回值SDK版本信息

举例如下:

# 获取SDK版本信息
res = smartvisionsdk.get_build_version()

获取Mat对象数据(函数 get_cvimage)

APIget_cvimage()
描述获取mat对象数据。仅适用于python版本。可以通过此接口直接获取转换后的cv Mat对象数据。
参数
返回值mat对象数据

举例如下:

# 获取Mat对象数据,其中cap_img为输入的Mat对象,其值为YUV数据
im = smartvisionsdk.get_cvimage(cap_img)

获取最新日志信息(函数 log_last_msg)

APIlog_last_msg(log_level)
描述获取最新日志信息
参数SVLogLevel日志级别
返回值最新的一条日志记录

举例如下:

# 获取最新日志信息
res = log_last_msg(log_level);