Skip to content

Smart Vision V2 C++ 接口文档

Smart Vision V2 SDK C++ API

tip

To compile with Smart Vision SDK C++ API, include the Smart Vision SDK header file:

#include "smart_vision.hpp"

When linking, specify the Smart Vision SDK shared library, for example:

$g++ example.cpp -o demo -lsmartvision -L/usr/local/lib/

Smart Vision SDK header file path: /usr/local/include/aidlux/smartvision/smart_vision.hpp

Smart Vision SDK library path: /usr/local/lib/libsmartvision.so

C++ API Overview

StructMember VariableTypeDescription
Imagedataconst char *Pointer to buffer containing image data
wintTarget image width
hintTarget image height
cintNumber of image channels (typically 3)
lengthintMemory length occupied by image data
srcWidthintInternal image width, usually larger than final width
srcHeightintInternal image height
memCopyStartIndexintIndex indicating data in buffer
memCopyEndIndexintEnd index indicating data in buffer
planeOffsetintYUV data offset value
TcpConfigipconst char *IP address
portuint16_tPort number
SVSdkMemfdInfosrcYPlaneStrideintWidth of YUV data
srcSliceHeightintHeight of YUV data
memCopyStartIndexintStart index value (Note: Start index equals End index)
memCopyEndIndexintEnd index value
planeOffsetintYUV offset value
cam_idintCamera ID
exposureTimeint64_tExposure time
sensitivityint64_tISO sensitivity
AidluxSocketfdInfosrcWidthintInternal image width, usually larger than final width
srcHeightintInternal image height
srcYPlaneStrideintStride value for Y plane
srcSliceHeightintSlice height for Y plane
buffPlaneOffsetintBuffer plane offset
bufferSizeintBuffer size
frame_numberintFrame number
exposureTimeNsint64_tExposure time in nanoseconds
isoValueint64_tISO value
MediaInfodurationintDuration in ms
widthintWidth
heightintHeight
frame_ratefloatFrame rate
file_sizeuint64_tFile size
file_namestringFile name
RunningMetaDataae_stateint32_tAuto-exposure state
ae_modeint32_tAuto-exposure mode
exposure_timeint64_tExposure time (nanoseconds)
isoint32_tISO sensitivity
gainsfloat[4]Gain layout: [R, Gr, Gb, B]
transformint32_t[18]3×3 matrix stored as 18 int32_t values
Public FunctionDescription
void set_log_level(SVLogLevel log_level)Set log level
void set_log_destination(const char* destination_path = "./aidclog_smart_vision_", bool also_to_stderr = false)Set log file name and path
typedef std::function<int8_t(const Image &, const SVSdkMemfdInfo &)> GetImageCBUsed as input parameter for open() function to acquire image resources. This function is user-defined. The interface only provides type definition to standardize callback function definition.
int start_camera(int8_t idx = 0)Start specified camera index for preview.
int8_t configure_camera_parameter(const char *conf_file, int8_t activate, int8_t idx = 0)Activate camera configuration parameters.
int8_t configure_camera_parameter(int8_t activate, const char *json_param, int8_t idx = 0)Activate camera JSON configuration parameters.
int8_t close_camera(int8_t idx = 0)Close specified camera index.
int8_t set_off_mode()Set OFF mode to disable signal output.
int8_t get_tcp_setting(int cam_id, TcpConfig& tcp_setting)Get TCP settings.
int8_t tcp_send_signal(int cam_id, std::string message)Send TCP signal.
int8_t tcp_send(std::string message, TcpConfig& tcp_setting)Send TCP string message.
int8_t io_send(std::string io_str, std::string io_control_file)Write specified string to specific file.
int8_t send_signal_on(int device_id)Send up signal to specified device (e.g., do1, do2, do3), keeptime read from configuration.
int8_t send_signal_on(int device_id, int keeptime)Send up signal to specified device (e.g., do1, do2, do3), keeptime passed as parameter.
int8_t send_signal_off(int device_id)Send clear signal to specified device (e.g., do1, do2, do3).
std::string get_camera_info(int8_t idx = 0)Get corresponding configuration file path based on camera index, read and parse JSON format camera configuration.
std::string get_camera_default_setting(int8_t idx = 0)Load default configuration via camera index, get complete configuration string and sync to system singleton.
std::string get_sensor_model_info(int idx)Get sensor model information.
vector<std::string> get_all_cam_ids(bool disable_cache = false)Decide whether to read from local configuration or detect all camera model names in real-time based on cache disabling.
vector<int> get_all_cam_index()Get all indices.
unordered_map<int, std::string> get_all_cameras(bool disable_cache = false)Call underlying detection logic to get all camera information.
int get_idx_by_loc_id(int loc_id)Find corresponding logical index (cam_id or idx) based on camera's physical location ID (loc_id).
int get_loc_id_by_idx(int idx)Reverse lookup physical location ID (loc_id) based on camera's logical index (idx).
int get_cam_index(std::string cam_id)Find corresponding logical index by camera name.
std::string get_cam_id(int cam_index)Find and return corresponding camera name based on logical index.
int8_t get_camera_status(int8_t idx = 0)Record and return current status code of specified camera index via logs.
int get_camera_status_fifo(int idx = 0)Query latest GST status from camera status FIFO.
int8_t notify_sve(SPhase phase_enum)Send current task phase notification to local SVE service via HTTP (POST) request.
int8_t save_result(const char *release_id, const char *release_version, const char *origin_file, const char *mask_file, const char *final_file, const char *additional = "")Package image analysis task result file paths and additional information as JSON and report to local SVE service.
cv::Mat get_cvimage(Image &img, int idx, int max_timeout_ms)Get image data from specified index, convert to BGR three-channel matrix usable by OpenCV.
void qmm_cleanup(int cam_id = 0, const char* comments = "NA")Send control signal in specific format to stop specified or all camera services.
void qmm_cleanup_all()Send control signal in specific format to stop specified or all camera services.
void qmm_cleanup_invalid()Clean up qmm processes with abnormal status.
int qmm_status(int idx = 0)Check if service process corresponding to specified camera index is alive, implemented based on Redis heartbeat mechanism.
int start_record(int idx)Safely start camera video recording with multiple pre-checks.
int get_record_status()Query current video recording status.
MediaInfo stop_record(int idx)Stop camera recording process and extract recording result metadata from internal state.
int set_bpp_binning(std::string cam_id, int binning_flag, int hb, int vb, int bpp_flag, int bpp)Specify camera pixel binning and bit depth.
bool isIPFormat(const char* str)Check if string is IPv4 or (full format) IPv6 address.
bool isFileExists(const std::string& filePath)Check if file path corresponds to existing file (or directory).
bool createNewSignalFile(const std::string& filePath)Create text file at specified path and write default JSON configuration.
int enable_fd_switch(int idx, int flag)Enable or disable zero-copy switch for specified camera.
int get_fd_with_meta(int idx, AidluxSocketfdInfo &out_meta, bool customize = false)Get file descriptor for specified camera and return file descriptor metadata.
int get_fd_with_meta_extern(int idx, AidluxSocketfdInfo &out_meta)Get file descriptor for specified camera and return file descriptor data (external version).
void disconnect(int idx)Disconnect zero-copy connection for specified camera index.
SVSdkMemfdInfo get_camera_rt_info(int idx)Get real-time information for specified camera index.
AidluxSocketfdInfo get_camera_rt_info_f(int idx)Get real-time camera information in FD mode for specified camera index.
bool get_camera_capture_status(int idx = 0)Check if specified camera is capturing images.
bool get_running_metadata(int cam_id, RunningMetaData& out_meta)Get runtime metadata for specified camera.
bool set_bpp_binning_data(int height, int width, int framerate, int idx)Set camera pixel binning and bit depth data.
std::string generate_gamma_curves(int num_points, float gamma)Generate standard gamma correction curves.
std::string generate_gamma_curves1(int num_points, float gamma)Generate standard gamma correction curves (variant 1).
std::array<std::array<double, 3>, 3> computeCCM3x3FromImage(const cv::Mat &bgr, const cv::Point2f corners[4], double innerScale = 0.5)Compute 3x3 color correction matrix from image.
std::array<int, 18> ccmToAndroidColorTransform(const cv::Mat &bgr, const cv::Point2f corners[4], int denom = 10000, double innerScale = 0.5)Convert CCM to Android color transform format.
std::string get_camera_setting(int8_t idx = 0)Get the latest effective camera setting.
std::string get_alltonemap_data(int cameraindex)Retrieve all tonemap curve data for a camera.
std::string get_tonemap_point(int cameraindex, const std::string& channel, size_t index)Retrieve a specific tonemap point.
int8_t get_mode_value()Get the current signal output mode value.
int get_io_keeptime(int device_id)Get keeptime for specified device.
const char *get_build_version(void)Get the build version string of the SDK.
const char *get_build_meta(void)Get build metadata such as build timestamp.
const char *get_build_id(void)Get the Git commit identifier of the current build.
const char *log_last_msg(SVLogLevel log_level)Get the most recent log message for a specific level.
EnumMember VariableTypeDescription
SVLogLevelSINFOuint8_tLog level SINFO
SWARNINGuint8_tLog level SWARNING
SERRORuint8_tLog level SERROR
SDEBUGuint8_tLog level SDEBUG
SOFFuint8_tLog level SOFF
SignalTypeOFFuint8_tDisable signal output
NG_SIGNALuint8_tNG signal output mode
ALARM_SIGNALuint8_tAlarm signal output mode
OK_SIGNALuint8_tOK signal output mode
SignalModeIO_MODEuint8_tIO mode
TCP_MODEuint8_tTCP mode
MODBUS_MODEuint8_tMODBUS mode
UART_MODEuint8_tUART mode
SPhaseOPEN_CAMERA_ING_ENUM11Opening camera
OPEN_CAMERA_SUC_ENUM2Camera opened successfully
OPEN_CAMERA_FAIL_ENUM3Camera opening failed
LOAD_MODEL_ING_ENUM4Loading model
LOAD_MODEL_SUC_ENUM5Model loaded successfully
LOAD_MODEL_FAIL_ENUM6Model loading failed
WAIT_IMAGE_ING_ENUM7Waiting for image

Struct Image

Defines image data related information, including image configuration and pointer variables.

Member VariableTypeDefaultDescription
dataconst char*Pointer to buffer containing data
wintTarget image width
hintTarget image height
cintNumber of image channels (typically 3)
lengthintMemory length occupied by image data
srcWidthintInternal image width, usually larger than final width
srcHeightintInternal image height
memCopyStartIndexintIndex indicating data in buffer
memCopyEndIndexintEnd index indicating data in buffer
planeOffsetintYUV data offset value
srcYPlaneStrideintStride value for Y plane
srcSliceHeightintSlice height for Y plane
bufferSizeintBuffer size
frame_numberintFrame number
exposureTimeNsint64_tExposure time in nanoseconds
isoValueint64_tISO value
rt_fpsfloatReal-time frame rate
ma_fpsfloatMoving average frame rate (30-frame window)
start_timestd::chrono::time_pointstd::chrono::high_resolution_clockFrame processing start timestamp
end_timestd::chrono::time_pointstd::chrono::high_resolution_clockFrame processing end timestamp
num_framesuint64_tCumulative frame count
frame_count_for_fpsint0Frame count used for FPS calculation

Struct TcpConfig

Defines TCP signal output configuration.

Member VariableTypeDefaultDescription
ipconst char*IP address
portuint16_tPort number

Struct SVSdkMemfdInfo

Defines data buffer information.

Member VariableTypeDescription
srcYPlaneStrideintWidth of YUV data
srcSliceHeightintHeight of YUV data
memCopyStartIndexintStart index value (Note: Start index equals End index)
memCopyEndIndexintEnd index value
planeOffsetintYUV offset value
cam_idintCamera ID
exposureTimeint64_tCamera exposure time
sensitivityint64_tCamera ISO sensitivity

Struct RunningMetaData

Defines runtime metadata captured from the camera pipeline.

Member VariableTypeDescription
ae_stateint32_tAuto-exposure state
ae_modeint32_tAuto-exposure mode
exposure_timeint64_tExposure time (nanoseconds)
isoint32_tISO sensitivity
gainsfloat[4]Gain layout: [R, Gr, Gb, B]
transformint32_t[18]3×3 matrix stored as 18 int32_t values

Struct AidluxSocketfdInfo

Defines metadata returned together with an image buffer file descriptor.

Member VariableTypeDescription
srcWidthintInternal image width, usually larger than final width
srcHeightintInternal image height
srcYPlaneStrideintStride value for Y plane
srcSliceHeightintSlice height for Y plane
buffPlaneOffsetintBuffer plane offset
bufferSizeintBuffer size
frame_numberintFrame number
exposureTimeNsint64_tExposure time in nanoseconds
isoValueint64_tISO value

Struct MediaInfo

Defines recording result information returned by the SDK.

Member VariableTypeDescription
durationintDuration in ms
widthintWidth
heightintHeight
frame_ratefloatFrame rate
file_sizeuint64_tFile size
file_namestringFile name and path

Set Log Level (Function set_log_level)

APIvoid set_log_level(SVLogLevel log_level)
DescriptionSet log level.
Parameterslog_level: SVLogLevel enum. See SVLogLevel Enum for details.
Return ValueNone

Example:

cpp
// Set log level
Aidlux::SmartVision::set_log_level(SVLogLevel::SINFO);

Set Log File Name and Path (Function set_log_destination)

APIvoid set_log_destination(const char* destination_path = "./aidclog_smart_vision_", bool also_to_stderr = false)
DescriptionSet log file name and path
Parametersdestination_path: Log file path with name, default is "./aidclog_smart_vision_". also_to_stderr: Whether to output to terminal, default is false
Return ValueNone

Example:

cpp
// Set log file name and path
const char* log_path = "./aidclog_smart_vision_";
Aidlux::SmartVision::set_log_destination(log_path);

Log Level (Enum SVLogLevel)

Member VariableTypeDefaultDescription
SINFOuint8_t0Log level SINFO
SWARNINGuint8_tLog level SWARNING
SERRORuint8_tLog level SERROR
SDEBUGuint8_tLog level SDEBUG
SOFFuint8_tLog level SOFF

Callback Function GetImageCB

APItypedef std::function<int8_t(const Image &, const SVSdkMemfdInfo &)> GetImageCB
DescriptionUsed as input parameter for open() function to acquire image resources. This function is user-defined. The interface only provides type definition to standardize callback function definition.
ParametersFirst parameter is Image struct instance through which data is passed. Second parameter is buffer struct containing buffer index, YUV data width/height, etc.
Return ValueUser-defined

Example:

cpp
// Callback function definition
bool data_sign = false;
cv::Mat SDKframe;
int8_t my_get_img_cb(const Aidlux::SmartVision::Image & cap_img, const SVSdkMemfdInfo &index)
{
    t_count++;
    cout << "Image - w: " << cap_img.w << ", h: " << cap_img.h << "Image - w: " << cap_img.srcWidth << ", h: " << cap_img.srcHeight << ", length: " << cap_img.length << ", rt fps: " << cap_img.rt_fps << ", ma fps: " << cap_img.ma_fps << endl;
    // Add handler, only process when data_sign is true
    if(data_sign){
        data_sign1 = false;
    }

    return 0;
}

Open Camera with Specified Index

APIint start_camera(int8_t idx = 0)
DescriptionOpen camera without parameters.
Parametersidx: Camera index.
Return Value0: Success. -1: Failure.

Example:

cpp
int result = start_camera(0);

Activate Configuration File to Set Camera

APIint8_t configure_camera_parameter(const char *conf_file, int8_t activate, int8_t idx = 0)
DescriptionActivate camera parameters via configuration file.
Parametersconf_file: String path to camera configuration file. activate: 0 for inactive, 1 for active. idx: Camera index.
Return Value0: Success. -1: Failure.

Example:

cpp
const char* config_path = "/home/user/camera_config_1080p.json";
int8_t result = Aidlux::SmartVision::configure_camera_parameter(config_path, 1, 0);

Activate JSON Configuration for Camera (Function configure_camera_parameter)

APIint8_t configure_camera_parameter(int8_t activate, const char* json_param, int8_t idx = 0)
DescriptionActivate camera parameters via JSON configuration.
Parametersactivate: 0 for inactive, 1 for active. json_param: JSON format string. idx: Camera index.
Return Value0: Success. -1: Failure.

Example:

cpp
const char* config = R"({
        "width": 1280,
        "height": 720,
        "fps": 25,
        "exposure": -4,
        "brightness": 50
    })";
int8_t result = Aidlux::SmartVision::configure_camera_parameter(1, config, 0);

Close Specified Camera Index

APIint8_t close_camera(int8_t idx = 0)
DescriptionClose specified camera index.
Parametersidx: Camera index.
Return Value0: Success. -1: Failure.

Example:

cpp
int8_t result = close_camera(0);

Set OFF Mode to Disable Signal Output (Function set_off_mode)

APIint8_t set_off_mode()
DescriptionSet OFF mode to disable signal output.
ParametersNone
Return Value-1: Failure. 0: Success.

Example:

cpp
// Set OFF mode to disable signal output
int8_t res = set_off_mode();

Configure TCP (Function get_tcp_setting)

APIint8_t get_tcp_setting(int cam_id, TcpConfig& tcp_setting)
DescriptionGet TCP settings
Parameterscam_id: Camera ID. tcp_setting: Instance of TcpConfig struct. Contains TCP output information.
Return Value-1: Failure. 0: Success.

Example:

cpp
int8_t cam_id = 0;
TcpConfig tcpsetting;
int8_t res = get_tcp_setting(cam_id, tcpsetting);

Get TCP Settings (Function tcp_send_signal)

APIint8_t tcp_send_signal(int cam_id, std::string message)
DescriptionSend TCP signal to specified camera.
Parameterscam_id: Camera ID. message: String data.
Return Value-1: Failure. 0: Success.

Example:

cpp
int8_t cam_id = 0;
string message = "hello world";
int8_t res = tcp_send_signal(cam_id, message);

TCP Message Sending (Function tcp_send)

APIint8_t tcp_send(std::string message, TcpConfig& tcp_setting)
DescriptionSend TCP message to specified string.
Parametersmessage: String data. tcp_setting: Instance of TcpConfig struct. Contains TCP output information.
Return Value-1: Failure. 0: Success.

Example:

cpp
string message = "hello world";
TcpConfig tcpsetting;
int8_t res = tcp_send(message, tcpsetting);

IO Data Sending (Function io_send)

APIint8_t io_send(std::string io_str, std::string io_control_file)
DescriptionWrite specified string data to a system file specified by path.
Parametersio_str: String data to write to file. io_control_file: Full path to target file (e.g., /sys/class/gpio/gpio17/value).
Return Value-1: Failure. 0: Success.

Example:

cpp
std::string gpio_value_path = "/sys/class/gpio/gpio17/value";
std::string value = "1";
int8_t result = Aidlux::SmartVision::io_send(value, gpio_value_path);

Digital Output Control (Function send_signal_on)

APIint8_t send_signal_on(int device_id)
DescriptionGet corresponding signal hold time from configuration based on input device ID.
Parametersdevice_id: Device number (1, 2, 3 correspond to DO1, DO2, DO3 respectively).
Return Value-1: Failure. 0: Success.

Example:

cpp
int8_t res = send_signal_on(1);

Digital Output Control (Function send_signal_on with hold time)

APIint8_t send_signal_on(int device_id, int keeptime)
DescriptionStart independent thread to manage signal duration and status.
Parametersdevice_id: Device number (1, 2, 3 correspond to DO1, DO2, DO3 respectively). keeptime: Signal hold time.
Return Value-1: Failure. 0: Success.

Example:

cpp
int8_t res = send_signal_on(1, 5000);

Digital Output Signal Off Control (Function send_signal_off)

APIint8_t send_signal_off(int device_id)
DescriptionSend clear signal to specified device (e.g., do1, do2, do3).
Parametersdevice_id: Device number (1, 2, 3 correspond to DO1, DO2, DO3 respectively).
Return Value0: Success. -1: Failure.

Example:

cpp
int8_t res = send_signal_off(1);

Signal Type Definition (Enum SignalType)

Member VariableTypeDefaultDescription
OFFuint8_t0Disable signal output
NG_SIGNALuint8_tNG signal output mode
ALARM_SIGNALuint8_tAlarm signal output mode
OK_SIGNALuint8_tOK signal output mode

Signal Type Definition (Enum SignalMode)

Member VariableTypeDefaultDescription
IO_MODEuint8_t0IO mode
TCP_MODEuint8_t1TCP mode
MODBUS_MODEuint8_t2MODBUS mode
UART_MODEuint8_t3UART mode

Task Phase Type Definition (Enum SPhase)

Member VariableTypeDescription
OPEN_CAMERA_ING_ENUM11Opening camera
OPEN_CAMERA_SUC_ENUM2Camera opened successfully
OPEN_CAMERA_FAIL_ENUM3Camera opening failed
LOAD_MODEL_ING_ENUM4Loading model
LOAD_MODEL_SUC_ENUM5Model loaded successfully
LOAD_MODEL_FAIL_ENUM6Model loading failed
WAIT_IMAGE_ING_ENUM7Waiting for image

Get SDK Version## Get SDK Version Information (Function get_build_version)

APIconst char *get_build_version()
DescriptionGet SDK version information.
ParametersNone
Return ValueSDK version string

Example:

cpp
// Get SDK version information
const char* res = get_build_version();

Get Build Timestamp (Function get_build_meta)

APIconst char *get_build_meta(void)
DescriptionBuild timestamp.
ParametersNone
Return ValueTimestamp at compile time.

Example:

cpp
// Get SDK version information
const char* res = get_build_meta();

Get Build ID (Function get_build_id)

APIconst char *get_build_id(void)
DescriptionIdentify code version.
ParametersNone
Return ValueGit commit hash.

Example:

cpp
// Get SDK version information
const char* res = get_build_id();

Get Latest Log Message (Function log_last_msg)

APIconst char* log_last_msg(SVLogLevel log_level)
DescriptionGet latest log message.
ParametersSVLogLevel log level
Return ValueLatest log record

Example:

cpp
// Get latest log message
const char* res = log_last_msg(log_level);

Get Camera Configuration (Function get_camera_setting)

APIstring get_camera_setting(int8_t idx = 0)
DescriptionGet camera configuration parameters.
Parametersidx: Camera index. Default is 0. Can use default value without input.
Return ValueJSON format string

Example:

cpp
string res = get_camera_setting();

Get Camera Configuration (Function get_camera_info)

APIstring get_camera_info(int8_t idx = 0)
DescriptionGet corresponding configuration file path based on camera index, read and parse JSON format camera configuration.
Parametersidx: Camera index.
Return ValueSuccess: JSON format string containing camera configuration. Failure: Empty string ("").

Example:

cpp
std::string info = Aidlux::SmartVision::get_camera_info(0);

Get Complete Configuration (Function get_camera_default_setting)

APIstring get_camera_default_setting(int8_t idx = 0)
DescriptionLoad default configuration via camera index, get complete configuration string and sync to system singleton.
Parametersidx: Camera index.
Return ValueSuccess: JSON format string containing camera configuration. Failure: Empty string ("").

Example:

cpp
std::string setting = Aidlux::SmartVision::get_camera_default_setting(0);

Get Sensor Model Information (Function get_sensor_model_info)

APIstring get_sensor_model_info(int idx)
DescriptionGet sensor model information.
Parametersidx: Camera index.
Return ValueSuccess: String containing sensor model information. Failure: Empty string ("").

Example:

cpp
std::string setting = Aidlux::SmartVision::get_sensor_model_info(0);

Get All Camera IDs (Function get_all_cam_ids)

APIstd::vector<std::string> get_all_cam_ids(bool disable_cache = false)
DescriptionDecide whether to read from local configuration or detect all camera model names in real-time based on cache disabling.
Parametersdisable_cache (true: Force re-detection, clear cache. false: Use cached data, no re-detection).
Return ValueList of SensorName strings for all successfully identified cameras.

Example:

cpp
auto camera_list = get_all_cam_ids(false); // Use cache

Get All Indices (Function get_all_cam_index)

APIstd::vector<int> get_all_cam_index()
DescriptionGet all indices.
ParametersNone
Return ValueCollection of all camera indices.

Example:

cpp
auto camera_list = get_all_cam_index();

Get Camera Information (Function get_all_cameras)

APIstd::unordered_map<int, std::string> get_all_cameras(bool disable_cache = false)
DescriptionCall underlying detection logic to get all camera information.
Parametersdisable_cache (true: Force re-detection, clear cache. false: Use cached data, no re-detection).
Return ValueKey: Camera physical location ID (e.g., 0, 1, 2). Value: Corresponding sensor name.

Example:

cpp
auto cameras = get_all_cameras(false); // Use cache

Get Index by Location ID (Function get_idx_by_loc_id)

APIint get_idx_by_loc_id(int loc_id)
DescriptionFind corresponding logical index (cam_id or idx) based on camera's physical location ID (loc_id).
Parametersloc_id: Physical location identifier.
Return ValueSuccess: Corresponding logical index. Failure: -1.

Example:

cpp
int idx = get_idx_by_loc_id(1); // Assume loc_id=1 corresponds to idx=0 �?returns 0

Get Location ID by Index (Function get_loc_id_by_idx)

APIint get_loc_id_by_idx(int idx)
DescriptionReverse lookup physical location ID (loc_id) based on camera's logical index (idx).
Parametersidx: Camera index.
Return ValueSuccess: Corresponding loc_id. Failure: -1.

Example:

cpp
int loc_id = get_loc_id_by_idx(0); // Assume idx=0 comes from loc_id=1 �?returns 1

Get Logical Index (Function get_cam_index)

APIint get_cam_index(std::string cam_id)
DescriptionFind corresponding logical index by camera name.
Parameterscam_id: Camera name.
Return ValueSuccess: Corresponding logical index (e.g., 0, 1, 2). Failure: -1.

Example:

cpp
int idx = get_cam_index("OV5645");

Get Camera Name (Function get_cam_id)

APIstring get_cam_id(int cam_index)
DescriptionFind and return corresponding camera name based on logical index.
Parameterscam_index: Camera logical index.
Return ValueSuccess: Corresponding camera name. Failure: Empty string "".

Example:

cpp
std::string cam_name = get_cam_id(0);

Get Current Camera Status (Function get_camera_status)

APIint8_t get_camera_status(int8_t idx = 0)
DescriptionRecord and return current status code of specified camera index via logs.
Parametersidx: Camera logical index.
Return ValueCamera status code defined by CameraSIns.

Example:

cpp
int8_t status = get_camera_status(0);

Get Camera Status from FIFO (Function get_camera_status_fifo)

APIint get_camera_status_fifo(int idx = 0)
DescriptionQuery the latest GST status received from the camera status FIFO.
Parametersidx: Camera logical index.
Return Value0: gst_state. 1: gst_error. 2: gst_eos. -1: Unavailable.

Example:

cpp
int fifo_status = get_camera_status_fifo(0);

Send Task Notification (Function notify_sve)

APIint8_t notify_sve(SPhase phase_enum)
DescriptionSend current task phase notification to local SVE service via HTTP (POST) request.
Parametersphase_enum: Enum value representing current task status (OPEN_CAMERA_ING_ENUM1 = 1, OPEN_CAMERA_SUC_ENUM2).
Return Value0: Request sent successfully and response received. -1: Initialization failed or error occurred.

Example:

cpp
int8_t res = notify_sve(SPhase::OPEN_CAMERA_ING_ENUM1);

Upload Content to SVE Service (Function save_result)

APIint8_t save_result(const char *release_id, const char *release_version, const char *origin_file, const char *mask_file, const char *final_file, const char *additional = "")
DescriptionPackage image analysis task result file paths and additional information as JSON and report to local SVE service.
Parametersrelease_id: Release/task ID. release_version: Version number. origin_file: Original image file path. mask_file: Mask image file path. final_file: Final result image file path. additional: Additional JSON string (can be empty).
Return Value0: Success. -1: Failure.

Example:

cpp
int8_t ret = save_result(
    "task_123",                    // release_id
    "v1.0",                        // release_version
    "/tmp/origin.jpg",             // origin_file
    "/tmp/mask.png",               // mask_file
    "/tmp/final.jpg",              // final_file
    "{\"defect_size\":23.5,\"confidence\":0.98}"  // additional (JSON string)
);

save_result (cv::Mat overload)

APIint8_t save_result(const char *release_id, const char *release_version, cv::Mat &origin_bgr, cv::Mat &mask_bgr, cv::Mat &final_bgr, const char *dir_path = "/tmp/smartvisionsdk/", const char *additional = "")
DescriptionSave result images from OpenCV matrices and submit them for collection by SVE.
Parametersrelease_id: Release/task ID. release_version: Version number. origin_bgr: Original image. mask_bgr: Mask image. final_bgr: Final result image. dir_path: Output directory path. additional: Additional metadata string.
Return Value0: Success. -1: Failure.

Example:

cpp
cv::Mat origin = cv::imread("origin.jpg");
cv::Mat mask = cv::imread("mask.png");
cv::Mat final = cv::imread("final.jpg");

int8_t ret = save_result(
    "task_123",        // release_id
    "v1.0",            // release_version
    origin,            // origin_bgr
    mask,              // mask_bgr
    final,             // final_bgr
    "/tmp/smartvisionsdk/"  // dir_path
);

save_result (Directory copy overload)

APIint8_t save_result(const char *release_id, const char *release_version, const char *srcAddr = "./", const char *dstAddr = "/var/opt/aidlux/global/")
DescriptionSubmit a directory copy result to SVE.
Parametersrelease_id: Release/task ID. release_version: Version number. srcAddr: Source directory. dstAddr: Destination directory.
Return Value0: Success. -1: Failure.

Example:

cpp
int8_t ret = save_result(
    "task_123",                    // release_id
    "v1.0",                        // release_version
    "/tmp/results/",               // srcAddr
    "/var/opt/aidlux/global/"      // dstAddr
);

Image Conversion (Function get_cvimage)

APIcv::Mat get_cvimage(Image &img, int idx, int max_timeout_ms)
DescriptionGet image data from specified index, convert to BGR three-channel matrix usable by OpenCV.
Parametersimg: Reference to Image struct for storing image data. idx: Camera logical index. max_timeout_ms: Maximum wait time in milliseconds.
Return ValueSuccess: Converted BGR image matrix. Failure: Empty matrix (cv::Mat()).

Example:

cpp
Image img;
int camera_idx = 0;
cv::Mat frame = Aidlux::SmartVision::get_cvimage(img, camera_idx, 1000);
printf("res=%dx%d | exp=%ld ns | iso=%ld\n", img.h, img.w, img.exposureTimeNs, img.isoValue);

Close Camera Service (Function qmm_cleanup)

APIvoid qmm_cleanup(int cam_id = 0, const char* comments = "NA")
DescriptionSend control signal in specific format to stop specified or all camera services.
Parameterscam_id: Camera logical index. comments: Optional cleanup comment string.
Return ValueNone.

Example:

cpp
// Stop camera 0
qmm_cleanup(0);

Close All Camera Services (Function qmm_cleanup_all)

APIvoid qmm_cleanup_all()
DescriptionSend control signal in specific format to stop all camera services.
ParametersNone
Return ValueLoop through 3 cameras, call qmm_message("5" + to_string(i)) for each index, output logs for each send.

Example:

cpp
qmm_cleanup_all();

Clean Up Abnormal Processes (Function qmm_cleanup_invalid)

APIvoid qmm_cleanup_invalid()
DescriptionClean up qmm processes with abnormal status.
ParametersNone
Return ValueNone

Example:

cpp
qmm_cleanup_invalid();

Process Check (Function qmm_status)

APIint qmm_status(int idx = 0)
DescriptionCheck if service process corresponding to specified camera index is alive, implemented based on Redis heartbeat mechanism.
Parametersidx: Camera logical index.
Return Value2: Service running. 0: Not registered. 4: Service abnormal.

Example:

cpp
int status = qmm_status(0);

Start Recording (Function start_record)

APIint start_record(int idx)
DescriptionSafely start camera video recording with multiple pre-checks.
Parametersidx: Camera logical index.
Return Value0: Success. -1: Failure.

Example:

cpp
int cam_idx = 0;
if (Aidlux::SmartVision::get_camera_status(cam_idx) == 2)
{
    int ret = Aidlux::SmartVision::start_record(cam_idx);
    if (ret == 0) {
        printf("Started successfully!\n");
    } else {
        printf("Failed to start recording, please check if preview is enabled or frame rate settings\n");
    }
} else {
    printf("Camera not running, please call start_camera_capture() first\n");
}

Recording Status Check (Function get_record_status)

APIint get_record_status()
DescriptionQuery current video recording status.
ParametersNone
Return Value0: Recording. -1: Not recording.

Example:

cpp
int record_status = Aidlux::SmartVision::get_record_status();
if (record_status == 0) {
    CLOGI("Recording video...");
} else {
    CLOGI("Not recording");
}

Stop Recording (Function stop_record)

APIMediaInfo stop_record(int idx)
DescriptionStop camera recording process and extract recording result metadata from internal state.
Parametersidx: Camera logical index.
Return ValueMediaInfo: Struct containing recording result information. May return default values even if recording failed.

Example:

cpp
int cam_idx = 0;
// Stop recording and get information
MediaInfo record_info = Aidlux::SmartVision::stop_record(cam_idx);

Pixel Binning and Bit Depth (Function set_bpp_binning)

APIint set_bpp_binning(string cam_id, int binning_flag, int hb, int vb, int bpp_flag, int bpp)
DescriptionSpecify camera pixel binning and bit depth.
Parameterscam_id: Camera unique identifier. binning_flag: Enable binning (0=disable, 1=enable). hb: Horizontal binning factor (e.g., 2 means 2 pixels merged into 1). vb: Vertical binning factor (e.g., 2 means 2 lines merged into 1). bpp_flag: Enable custom bit depth (0=use default, 1=enable bpp setting). bpp: Target bit depth (common values: 8, 10, 12, 16 bits).
Return Value0: Success. -1: Failure.

Example:

cpp
// Example: Configure camera0 with 2x2 binning and 12-bit output
int ret = set_bpp_binning
(
    "camera0",   // cam_id
    1,           // binning_flag: enable
    2,           // hb: horizontal 2x1
    2,           // vb: vertical 2x1
    1,           // bpp_flag: custom bit depth
    12           // bpp: 12-bit output
);

IP Address Validation (Function isIPFormat)

APIbool isIPFormat(const char* str)
DescriptionCheck if string is IPv4 or (full format) IPv6 address.
Parametersstr (const char*): String to check.
Return Valuetrue: String matches IPv4 or IPv6 format. false: Format mismatch or null pointer.

Example:

cpp
std::cout << isIPFormat("192.168.1.1") << std::endl;

File Existence Check (Function isFileExists)

APIbool isFileExists(const std::string& filePath)
DescriptionCheck if file path corresponds to existing file (or directory).
ParametersfilePath (const std::string&): File path to check.
Return Valuetrue: File or directory exists. false: Does not exist or access error.

Example:

cpp
bool exists = Aidlux::SmartVision::isFileExists("/home/user/config.json");

Create Signal File (Function createNewSignalFile)

APIbool createNewSignalFile(const std::string& filePath)
DescriptionCreate text file at specified path and write default JSON configuration.
ParametersfilePath (const std::string&): Path to new file.
Return Valuetrue: Created successfully. false: Failed to create.

Example:

cpp
bool result = Aidlux::SmartVision::createNewSignalFile("/tmp/signal_config.json");

Enable Zero-Copy Switch (Function enable_fd_switch)

APIint enable_fd_switch(int idx, int flag)
DescriptionEnable or disable zero-copy switch for specified camera.
Parametersidx: Camera index. flag: 0 to disable, 1 to enable.
Return Value0: Success. -1: Failure.

Example:

cpp
int result = Aidlux::SmartVision::enable_fd_switch(0, 1);

Get File Descriptor with Metadata (Function get_fd_with_meta)

APIint get_fd_with_meta(int idx, AidluxSocketfdInfo &out_meta, bool customize = false)
DescriptionGet file descriptor for specified camera and return file descriptor data.
Parametersidx: Camera index. out_meta: Output parameter for returning file descriptor metadata. customize: Optional customization flag.
Return ValueFile descriptor. -1 on failure.

Example:

cpp
AidluxSocketfdInfo meta;
int fd = Aidlux::SmartVision::get_fd_with_meta(0, meta);

Disconnect Zero-Copy (Function disconnect)

APIvoid disconnect(int idx)
DescriptionDisconnect zero-copy connection for specified camera index.
Parametersidx: Camera index.
Return ValueNone

Example:

cpp
Aidlux::SmartVision::disconnect(0);

Get Camera Real-Time Information (Function get_camera_rt_info)

APISVSdkMemfdInfo get_camera_rt_info(int idx)
DescriptionGet real-time information for specified camera index.
Parametersidx: Camera index.
Return ValueSVSdkMemfdInfo struct containing real-time camera information.

Example:

cpp
SVSdkMemfdInfo info = Aidlux::SmartVision::get_camera_rt_info(0);

Get Camera Real-Time Information in FD Mode (Function get_camera_rt_info_f)

APIAidluxSocketfdInfo get_camera_rt_info_f(int idx)
DescriptionGet real-time camera information in FD mode for specified camera index.
Parametersidx: Camera index.
Return ValueAidluxSocketfdInfo struct containing real-time FD-mode metadata.

Example:

cpp
AidluxSocketfdInfo fd_info = Aidlux::SmartVision::get_camera_rt_info_f(0);

Get Camera Capture Status (Function get_camera_capture_status)

APIbool get_camera_capture_status(int idx = 0)
DescriptionCheck if specified camera is capturing images.
Parametersidx: Camera index.
Return Valuetrue: Capturing. false: Not capturing.

Example:

cpp
bool is_capturing = Aidlux::SmartVision::get_camera_capture_status(0);

Get Running Metadata (Function get_running_metadata)

APIbool get_running_metadata(int cam_id, RunningMetaData& out_meta)
DescriptionGet runtime metadata for specified camera.
Parameterscam_id: Camera ID. out_meta: Output parameter for returning metadata.
Return Valuetrue: Success. false: Failure.

Example:

cpp
RunningMetaData meta;
bool result = Aidlux::SmartVision::get_running_metadata(0, meta);

Set Binning and Bit Depth Data (Function set_bpp_binning_data)

APIbool set_bpp_binning_data(int height, int width, int framerate, int idx)
DescriptionSet camera pixel binning and bit depth data.
Parametersheight: Image height. width: Image width. framerate: Frame rate. idx: Camera index.
Return Valuetrue: Success. false: Failure.

Example:

cpp
bool result = Aidlux::SmartVision::set_bpp_binning_data(1080, 1920, 30, 0);

Compute Color Correction Matrix (Function computeCCM3x3FromImage)

APIstd::array<std::array<double, 3>, 3> computeCCM3x3FromImage(const cv::Mat &bgr, const cv::Point2f corners[4], double innerScale)
DescriptionCompute 3x3 color correction matrix from image.
Parametersbgr: Input BGR image. corners: 4 corner points. innerScale: Inner scale factor.
Return Value3x3 color correction matrix.

Example:

cpp
cv::Mat image = cv::imread("test.jpg");
cv::Point2f corners[4] = {cv::Point2f(0, 0), cv::Point2f(image.cols, 0), cv::Point2f(0, image.rows), cv::Point2f(image.cols, image.rows)};
auto ccm = Aidlux::SmartVision::computeCCM3x3FromImage(image, corners, 0.8);

Convert CCM to Android Color Transform (Function ccmToAndroidColorTransform)

APIstd::array<int, 18> ccmToAndroidColorTransform(const cv::Mat &bgr, const cv::Point2f corners[4], int denom = 10000, double innerScale = 0.5)
DescriptionConvert a computed CCM to the Android color transform format.
Parametersbgr: Input BGR image. corners: Four outer corners of the Macbeth color chart. denom: Denominator used for fixed-point scaling. innerScale: Scale factor used when sampling the inner region of each patch.
Return ValueFlattened 3x3 color transform represented as 18 integers.

Example:

cpp
cv::Mat image = cv::imread("test.jpg");
cv::Point2f corners[4] = {cv::Point2f(0, 0), cv::Point2f(image.cols, 0), cv::Point2f(0, image.rows), cv::Point2f(image.cols, image.rows)};
auto transform = Aidlux::SmartVision::ccmToAndroidColorTransform(image, corners, 10000, 0.5);

Get All Tone Mapping Data (Function get_alltonemap_data)

APIstd::string get_alltonemap_data(int cameraindex)
DescriptionRetrieves all tone mapping curve data for the camera.
Parameterscameraindex: The camera index.
Return ValueA JSON string containing the list of coordinates for each channel.

Example:

cpp
std::string tonemap_data = Aidlux::SmartVision::get_alltonemap_data(0);

Get Tone Mapping Point (Function get_tonemap_point)

APIstd::string get_tonemap_point(int cameraindex, const std::string& channel, size_t index)
DescriptionRetrieves a specific tone mapping point for a specified channe.
Parameterscameraindex: The camera index.channel: The channel name, e.g., "red", "green", or "blue".index: The tone mapping point index.
Return ValueA JSON coordinate string in the format "[x, y]"; returns an empty string on failure.

Example:

cpp
std::string point = Aidlux::SmartVision::get_tonemap_point(0, "red", 5);

Generate Gamma Curves (Function generate_gamma_curves)

APIstd::string generate_gamma_curves(int num_points, float gamma)
DescriptionGenerates standard gamma correction curves.
Parametersnum_points: The number of points per curve.gamma: The gamma correction value.
Return ValueA JSON string containing RGB gamma curve data.

Example�?

cpp
std::string gamma_curves = Aidlux::SmartVision::generate_gamma_curves(256, 2.2f);

Generate Gamma Curves Variant 1 (Function generate_gamma_curves1)

APIstd::string generate_gamma_curves1(int num_points, float gamma)
DescriptionGenerates standard gamma correction curves (variant 1).
Parametersnum_points: The number of points per curve. gamma: The gamma correction value.
Return ValueA JSON string containing RGB gamma curve data.

Example�?

cpp
std::string gamma_curves1 = Aidlux::SmartVision::generate_gamma_curves1(256, 2.2f);

Get IO Mode Value (Function get_mode_value)

APIint8_t get_mode_value()
DescriptionRetrieves the current signal output mode value.
ParametersNone
Return ValueThe current mode value (0: IO_MODE, 1: TCP_MODE, 2: MODBUS_MODE, 3: UART_MODE).

Example�?

cpp
int8_t mode = Aidlux::SmartVision::get_mode_value();

Get IO Keep Time (Function get_io_keeptime)

APIint get_io_keeptime(int device_id)
DescriptionRetrieves the keep time for a specified device (e.g., do1, do2, do3).
Parametersdevice_id: The device ID (1, 2, and 3 correspond to DO1, DO2, and DO3 respectively).
Return ValueThe keep time value in milliseconds.

Example�?

cpp
int keeptime = Aidlux::SmartVision::get_io_keeptime(1);