Smart Vision SDK for Python
tip
使用smart vision sdk,需要先导入smartvisionsdk package:
from pysmartvision import smartvisionsdk
Python API预览
类(class) | 公共成员函数(public member function) | 类型(Type) | 描述(Description) |
---|---|---|---|
Camera | open(GetImageCB) | function | 以无参模式打开相机 |
open(DeviceParam, GetImageCB) | function | 以有参模式打开相机 | |
start_capture() | function | 打开流开关 | |
stop_capture() | function | 关闭流开关 | |
DeviceParam | cfg_name | str | 带路径的参数配置文件名 |
Image | data | str | 指向存放数据的缓冲区的指针 |
w | int | 目标图片宽度 | |
h | int | 目标图片高度 | |
c | int | 目标图片的通道(通常为3) | |
length | int | 图片数据所占内存长度 | |
IOConfig | ng_keeptime | int | 信号持续时间 |
do1 | SignalType | 管脚1 | |
do2 | SignalType | 管脚1 | |
TcpConfig | ip | str | IP地址 |
port | int | 端口号 | |
SVSdkMemfdInfo | srcYPlaneStride | int | YUV数据的宽 |
srcSliceHeight | int | YUV数据的高 | |
memCopyStartIndex | int | Start index值(注:Start index的值与End index相等) | |
memCopyEndIndex | int | End index值 | |
planeOffset | int | YUV偏移值 |
公共函数(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) |
---|---|---|---|
SVLogLevel | SINFO | int | 日志级别SINFO |
SWARNING | int | 日志级别SWARNING | |
SERROR | int | 日志级别SERROR | |
SFATAL | int | 日志级别SFATAL(Smart Vision SDK中未使用此级别) | |
SignalType | OFF | int | 关闭信号输出配置 |
NG_SIGNAL | int | NG信号输出模式 | |
ALARM_SIGNAL | int | alarm信号输出模式 |
类Camera
实例化类Camera对象相关操作。打开相机、抓图等相关的操作都基于实例化Camera对象
warning
与C++中不同,python代码中无需引入名字空间,而需要使用以下命令在python代码中import模块smartvisionsdk:
from pysmartvision import smartvisionsdk
具体使用方法请参考以下接口。
无参模式打开相机(函数 open)
API | open(cb) |
---|---|
描述 | 以无参模式打开相机。 |
参数 | 输入参数为回调函数。回调函数由客户自定义。关于回调函数请参考回调函数 |
返回值 | 0: 成功。-1: 失败。 |
举例如下(camera_instance
为类Camera的实例化对象,下同):
# 以无参模式打开相机
camera_instance = smartvisionsdk.Camera()
res = camera_instance.open(get_img_cb)
有参模式打开相机(函数 open)
API | open(dev_param, cb) |
---|---|
描述 | 以有参模式打开相机。 |
参数 | dev_param为类DeviceParam的实例化对象。cb为回调函数。回调函数由客户自定义。关于回调函数请参看回调函数 |
返回值 | 0: 成功。-1: 失败。 |
举例如下:
# 以有参模式打开相机
camera_instance = smartvisionsdk.Camera()
res = camera_instance.open(device_param, get_img_cb)
打开流开关(函数 start_capture)
API | start_capture() |
---|---|
描述 | 打开流开关 |
参数 | 无 |
返回值 | 无 |
举例如下:
# 打开流开关
camera_instance.start_capture()
关闭流开关(函数 stop_capture)
API | stop_capture() |
---|---|
描述 | 关闭流开关 |
参数 | 无 |
返回值 | 无 |
举例如下:
# 关闭流开关
camera_instance.stop_capture()
类DeviceParam
定义带路径的参数配置文件名。该参数配置文件用于配置相机参数。因此仅用于有参模式打开相机。
成员变量名 | 类型 | 默认值 | 描述 |
---|---|---|---|
cfg_name | str | 带路径的参数配置文件名 |
设置DeviceParam配置文件
API | set_cfgname(config_file) |
---|---|
描述 | 设置带路径的参数配置文件。 通过这个接口可设置cfg_name变量 |
参数 | config_file 为相机参数配置文件 |
返回值 | 无 |
举例如下:
# 设置配置文件
device_param = smartvisionsdk.DeviceParam()
device_param.set_cfgname("./config.json")
类Image
定义图片数据相关信息,包括图片配置信息及指针变量。
成员变量名 | 类型 | 默认值 | 描述 |
---|---|---|---|
data | str | 指向存放数据的缓冲区的字符串 | |
w | int | 目标图片宽度 | |
h | int | 目标图片高度 | |
c | int | 目标图片的通道(通常为3) | |
length | int | 图片数据所占内存长度 |
类IOConfig
定义IO信号输出配置信息。
成员变量名 | 类型 | 默认值 | 描述 |
---|---|---|---|
ng_keeptime | int | 信号持续时间 | |
do1 | SignalType | 管脚1 | |
do2 | SignalType | 管脚2 |
类TcpConfig
定义TCP信号输出配置信息。
成员变量名 | 类型 | 默认值 | 描述 |
---|---|---|---|
ip | str | IP地址 | |
port | int | 端口号 |
类SVSdkMemfdInfo
定义数据缓冲区信息。
成员变量名 | 类型 | 默认值 | 描述 |
---|---|---|---|
srcYPlaneStride | int | YUV数据的宽 | |
srcSliceHeight | int | YUV数据的高 | |
memCopyStartIndex | int | Start index值(注:Start index的值与End index相等) | |
memCopyEndIndex | int | End index值 | |
planeOffset | int | YUV偏移值 |
设置日志级别(函数 set_log_level
API | set_log_level(log_level) |
---|---|
描述 | 设置日志级别。 |
参数 | log_level 为SVLogLevel 类型的枚举,关于SVLogLevel 请参考枚举SVLogLevel |
返回值 | 无 |
举例如下:
# 设置日志级别
smartvisionsdk.set_log_level(smartvisionsdk.SVLogLevel.SINFO)
设置日志文件名及路径(函数 set_log_destination)
API | set_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)
API | log_to_stderr() |
---|---|
描述 | 设置日志文件名及路径 |
参数 | 设置日志输出到终端。一旦设置则不会再保存日志文件。一般不建议使用。 |
返回值 | 无 |
举例如下:
# 设置日志文件名及路径
smartvisionsdk.log_to_stderr()
日志级别(枚举 SVLogLevel)
成员变量名 | 类型 | 默认值 | 描述 |
---|---|---|---|
SINFO | int | 0 | 日志级别SINFO |
SWARNING` | int | 日志级别SWARNING | |
SERROR | int | 日志级别SERROR | |
SFATAL | int | 日志级别SFATAL(未使用) |
回调函数 GetImageCB
API | typedef 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)
API | get_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)
API | set_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)
API | set_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)
API | set_off_mode() |
---|---|
描述 | 设置OFF关闭信号输出配置。 |
参数 | 无 |
返回值 | -1: 失败。0: 成功 |
举例如下:
# 设置OFF关闭信号输出模式
res = smartvisionsdk.set_off_mode()
IO发送NG信号(函数 io_send_ng)
API | io_send_ng() |
---|---|
描述 | IO发送NG信号。 |
参数 | 无 |
返回值 | -1:失败。0:成功 |
举例如下:
# IO发送NG信号
res = smartvisionsdk.io_send_ng();
IO发送alarm信号(函数 io_send_alarm_raising)
API | io_send_alarm_raising() |
---|---|
描述 | IO发送alarm信号。 |
参数 | 无 |
返回值 | -1: 失败。0: 成功 |
举例如下:
# IO发送alarm信号
res = smartvisionsdk.io_send_alarm_raising();
IO发送alarm清除信号(函数 io_send_alarm_clear)
API | io_send_alarm_clear() |
---|---|
描述 | IO发送alarm清除信号。 |
参数 | 无 |
返回值 | -1: 失败。0: 成功 |
举例如下:
# IO发送alarmclear信号
res = smartvisionsdk.io_send_alarm_clear();
TCP发送NG信号(函数 tcp_send_ng)
API | tcp_send_ng() |
---|---|
描述 | TCP发送NG信号。 |
参数 | 无 |
返回值 | -1: 失败。0: 成功 |
举例如下:
# TCP发送NG信号
res = smartvisionsdk.tcp_send_ng();
TCP发送alarm信号(函数 tcp_send_alarm)
API | tcp_send_alarm() |
---|---|
描述 | TCP发送alarm信号。 |
参数 | 无 |
返回值 | -1: 失败。0: 成功 |
举例如下:
# TCP发送alarm信号
res = smartvisionsdk.tcp_send_alarm();
TCP发送alarm清除信号(函数 tcp_send_alarmclear)
API | tcp_send_alarmclear() |
---|---|
描述 | TCP发送alarm清除信号。 |
参数 | 无 |
返回值 | -1: 失败。0: 成功 |
举例如下:
# TCP发送alarmclear信号
res = smartvisionsdk.tcp_send_alarmclear();
信号类型定义(枚举 SignalType)
成员变量名 | 类型 | 默认值 | 描述 |
---|---|---|---|
OFF | int | 0 | 关闭信号输出配置 |
NG_SIGNAL | int | NG信号输出模式 | |
ALARM_SIGNAL | int | Alarm信号输出模式 |
获取SDK版本信息(函数 get_build_version)
API | get_build_version() |
---|---|
描述 | 获取SDK 版本信息。 |
参数 | 无 |
返回值 | SDK 版本信息 |
举例如下:
# 获取SDK版本信息
res = smartvisionsdk.get_build_version()
获取Mat对象数据(函数 get_cvimage)
API | get_cvimage() |
---|---|
描述 | 获取mat对象数据。仅适用于python版本。可以通过此接口直接获取转换后的cv Mat对象数据。 |
参数 | 无 |
返回值 | mat对象数据 |
举例如下:
# 获取Mat对象数据,其中cap_img为输入的Mat对象,其值为YUV数据
im = smartvisionsdk.get_cvimage(cap_img)
获取最新日志信息(函数 log_last_msg)
API | log_last_msg(log_level) |
---|---|
描述 | 获取最新日志信息 |
参数 | SVLogLevel日志级别 |
返回值 | 最新的一条日志记录 |
举例如下:
# 获取最新日志信息
res = log_last_msg(log_level);