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
| Struct | Member Variable | Type | Description |
|---|---|---|---|
| Image | data | const char * | Pointer to buffer containing image data |
| w | int | Target image width | |
| h | int | Target image height | |
| c | int | Number of image channels (typically 3) | |
| length | int | Memory length occupied by image data | |
| srcWidth | int | Internal image width, usually larger than final width | |
| srcHeight | int | Internal image height | |
| memCopyStartIndex | int | Index indicating data in buffer | |
| memCopyEndIndex | int | End index indicating data in buffer | |
| planeOffset | int | YUV data offset value | |
| TcpConfig | ip | const char * | IP address |
| port | uint16_t | Port number | |
| SVSdkMemfdInfo | srcYPlaneStride | int | Width of YUV data |
| srcSliceHeight | int | Height of YUV data | |
| memCopyStartIndex | int | Start index value (Note: Start index equals End index) | |
| memCopyEndIndex | int | End index value | |
| planeOffset | int | YUV offset value | |
| cam_id | int | Camera ID | |
| exposureTime | int64_t | Exposure time | |
| sensitivity | int64_t | ISO sensitivity | |
| AidluxSocketfdInfo | srcWidth | int | Internal image width, usually larger than final width |
| srcHeight | int | Internal image height | |
| srcYPlaneStride | int | Stride value for Y plane | |
| srcSliceHeight | int | Slice height for Y plane | |
| buffPlaneOffset | int | Buffer plane offset | |
| bufferSize | int | Buffer size | |
| frame_number | int | Frame number | |
| exposureTimeNs | int64_t | Exposure time in nanoseconds | |
| isoValue | int64_t | ISO value | |
| MediaInfo | duration | int | Duration in ms |
| width | int | Width | |
| height | int | Height | |
| frame_rate | float | Frame rate | |
| file_size | uint64_t | File size | |
| file_name | string | File name | |
| RunningMetaData | ae_state | int32_t | Auto-exposure state |
| ae_mode | int32_t | Auto-exposure mode | |
| exposure_time | int64_t | Exposure time (nanoseconds) | |
| iso | int32_t | ISO sensitivity | |
| gains | float[4] | Gain layout: [R, Gr, Gb, B] | |
| transform | int32_t[18] | 3×3 matrix stored as 18 int32_t values |
| Public Function | Description |
|---|---|
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 &)> GetImageCB | Used 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. |
| Enum | Member Variable | Type | Description |
|---|---|---|---|
| SVLogLevel | SINFO | uint8_t | Log level SINFO |
| SWARNING | uint8_t | Log level SWARNING | |
| SERROR | uint8_t | Log level SERROR | |
| SDEBUG | uint8_t | Log level SDEBUG | |
| SOFF | uint8_t | Log level SOFF | |
| SignalType | OFF | uint8_t | Disable signal output |
| NG_SIGNAL | uint8_t | NG signal output mode | |
| ALARM_SIGNAL | uint8_t | Alarm signal output mode | |
| OK_SIGNAL | uint8_t | OK signal output mode | |
| SignalMode | IO_MODE | uint8_t | IO mode |
| TCP_MODE | uint8_t | TCP mode | |
| MODBUS_MODE | uint8_t | MODBUS mode | |
| UART_MODE | uint8_t | UART mode | |
| SPhase | OPEN_CAMERA_ING_ENUM1 | 1 | Opening camera |
| OPEN_CAMERA_SUC_ENUM2 | Camera opened successfully | ||
| OPEN_CAMERA_FAIL_ENUM3 | Camera opening failed | ||
| LOAD_MODEL_ING_ENUM4 | Loading model | ||
| LOAD_MODEL_SUC_ENUM5 | Model loaded successfully | ||
| LOAD_MODEL_FAIL_ENUM6 | Model loading failed | ||
| WAIT_IMAGE_ING_ENUM7 | Waiting for image |
Struct Image
Defines image data related information, including image configuration and pointer variables.
| Member Variable | Type | Default | Description |
|---|---|---|---|
| data | const char* | Pointer to buffer containing data | |
| w | int | Target image width | |
| h | int | Target image height | |
| c | int | Number of image channels (typically 3) | |
| length | int | Memory length occupied by image data | |
| srcWidth | int | Internal image width, usually larger than final width | |
| srcHeight | int | Internal image height | |
| memCopyStartIndex | int | Index indicating data in buffer | |
| memCopyEndIndex | int | End index indicating data in buffer | |
| planeOffset | int | YUV data offset value | |
| srcYPlaneStride | int | Stride value for Y plane | |
| srcSliceHeight | int | Slice height for Y plane | |
| bufferSize | int | Buffer size | |
| frame_number | int | Frame number | |
| exposureTimeNs | int64_t | Exposure time in nanoseconds | |
| isoValue | int64_t | ISO value | |
| rt_fps | float | Real-time frame rate | |
| ma_fps | float | Moving average frame rate (30-frame window) | |
| start_time | std::chrono::time_pointstd::chrono::high_resolution_clock | Frame processing start timestamp | |
| end_time | std::chrono::time_pointstd::chrono::high_resolution_clock | Frame processing end timestamp | |
| num_frames | uint64_t | Cumulative frame count | |
| frame_count_for_fps | int | 0 | Frame count used for FPS calculation |
Struct TcpConfig
Defines TCP signal output configuration.
| Member Variable | Type | Default | Description |
|---|---|---|---|
| ip | const char* | IP address | |
| port | uint16_t | Port number |
Struct SVSdkMemfdInfo
Defines data buffer information.
| Member Variable | Type | Description |
|---|---|---|
| srcYPlaneStride | int | Width of YUV data |
| srcSliceHeight | int | Height of YUV data |
| memCopyStartIndex | int | Start index value (Note: Start index equals End index) |
| memCopyEndIndex | int | End index value |
| planeOffset | int | YUV offset value |
| cam_id | int | Camera ID |
| exposureTime | int64_t | Camera exposure time |
| sensitivity | int64_t | Camera ISO sensitivity |
Struct RunningMetaData
Defines runtime metadata captured from the camera pipeline.
| Member Variable | Type | Description |
|---|---|---|
| ae_state | int32_t | Auto-exposure state |
| ae_mode | int32_t | Auto-exposure mode |
| exposure_time | int64_t | Exposure time (nanoseconds) |
| iso | int32_t | ISO sensitivity |
| gains | float[4] | Gain layout: [R, Gr, Gb, B] |
| transform | int32_t[18] | 3×3 matrix stored as 18 int32_t values |
Struct AidluxSocketfdInfo
Defines metadata returned together with an image buffer file descriptor.
| Member Variable | Type | Description |
|---|---|---|
| srcWidth | int | Internal image width, usually larger than final width |
| srcHeight | int | Internal image height |
| srcYPlaneStride | int | Stride value for Y plane |
| srcSliceHeight | int | Slice height for Y plane |
| buffPlaneOffset | int | Buffer plane offset |
| bufferSize | int | Buffer size |
| frame_number | int | Frame number |
| exposureTimeNs | int64_t | Exposure time in nanoseconds |
| isoValue | int64_t | ISO value |
Struct MediaInfo
Defines recording result information returned by the SDK.
| Member Variable | Type | Description |
|---|---|---|
| duration | int | Duration in ms |
| width | int | Width |
| height | int | Height |
| frame_rate | float | Frame rate |
| file_size | uint64_t | File size |
| file_name | string | File name and path |
Set Log Level (Function set_log_level)
| API | void set_log_level(SVLogLevel log_level) |
|---|---|
| Description | Set log level. |
| Parameters | log_level: SVLogLevel enum. See SVLogLevel Enum for details. |
| Return Value | None |
Example:
// Set log level
Aidlux::SmartVision::set_log_level(SVLogLevel::SINFO);Set Log File Name and Path (Function set_log_destination)
| API | void set_log_destination(const char* destination_path = "./aidclog_smart_vision_", bool also_to_stderr = false) |
|---|---|
| Description | Set log file name and path |
| Parameters | destination_path: Log file path with name, default is "./aidclog_smart_vision_". also_to_stderr: Whether to output to terminal, default is false |
| Return Value | None |
Example:
// 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 Variable | Type | Default | Description |
|---|---|---|---|
| SINFO | uint8_t | 0 | Log level SINFO |
| SWARNING | uint8_t | Log level SWARNING | |
| SERROR | uint8_t | Log level SERROR | |
| SDEBUG | uint8_t | Log level SDEBUG | |
| SOFF | uint8_t | Log level SOFF |
Callback Function GetImageCB
| API | typedef std::function<int8_t(const Image &, const SVSdkMemfdInfo &)> GetImageCB |
|---|---|
| Description | Used 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. |
| Parameters | First parameter is Image struct instance through which data is passed. Second parameter is buffer struct containing buffer index, YUV data width/height, etc. |
| Return Value | User-defined |
Example:
// 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
| API | int start_camera(int8_t idx = 0) |
|---|---|
| Description | Open camera without parameters. |
| Parameters | idx: Camera index. |
| Return Value | 0: Success. -1: Failure. |
Example:
int result = start_camera(0);Activate Configuration File to Set Camera
| API | int8_t configure_camera_parameter(const char *conf_file, int8_t activate, int8_t idx = 0) |
|---|---|
| Description | Activate camera parameters via configuration file. |
| Parameters | conf_file: String path to camera configuration file. activate: 0 for inactive, 1 for active. idx: Camera index. |
| Return Value | 0: Success. -1: Failure. |
Example:
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)
| API | int8_t configure_camera_parameter(int8_t activate, const char* json_param, int8_t idx = 0) |
|---|---|
| Description | Activate camera parameters via JSON configuration. |
| Parameters | activate: 0 for inactive, 1 for active. json_param: JSON format string. idx: Camera index. |
| Return Value | 0: Success. -1: Failure. |
Example:
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
| API | int8_t close_camera(int8_t idx = 0) |
|---|---|
| Description | Close specified camera index. |
| Parameters | idx: Camera index. |
| Return Value | 0: Success. -1: Failure. |
Example:
int8_t result = close_camera(0);Set OFF Mode to Disable Signal Output (Function set_off_mode)
| API | int8_t set_off_mode() |
|---|---|
| Description | Set OFF mode to disable signal output. |
| Parameters | None |
| Return Value | -1: Failure. 0: Success. |
Example:
// Set OFF mode to disable signal output
int8_t res = set_off_mode();Configure TCP (Function get_tcp_setting)
| API | int8_t get_tcp_setting(int cam_id, TcpConfig& tcp_setting) |
|---|---|
| Description | Get TCP settings |
| Parameters | cam_id: Camera ID. tcp_setting: Instance of TcpConfig struct. Contains TCP output information. |
| Return Value | -1: Failure. 0: Success. |
Example:
int8_t cam_id = 0;
TcpConfig tcpsetting;
int8_t res = get_tcp_setting(cam_id, tcpsetting);Get TCP Settings (Function tcp_send_signal)
| API | int8_t tcp_send_signal(int cam_id, std::string message) |
|---|---|
| Description | Send TCP signal to specified camera. |
| Parameters | cam_id: Camera ID. message: String data. |
| Return Value | -1: Failure. 0: Success. |
Example:
int8_t cam_id = 0;
string message = "hello world";
int8_t res = tcp_send_signal(cam_id, message);TCP Message Sending (Function tcp_send)
| API | int8_t tcp_send(std::string message, TcpConfig& tcp_setting) |
|---|---|
| Description | Send TCP message to specified string. |
| Parameters | message: String data. tcp_setting: Instance of TcpConfig struct. Contains TCP output information. |
| Return Value | -1: Failure. 0: Success. |
Example:
string message = "hello world";
TcpConfig tcpsetting;
int8_t res = tcp_send(message, tcpsetting);IO Data Sending (Function io_send)
| API | int8_t io_send(std::string io_str, std::string io_control_file) |
|---|---|
| Description | Write specified string data to a system file specified by path. |
| Parameters | io_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:
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)
| API | int8_t send_signal_on(int device_id) |
|---|---|
| Description | Get corresponding signal hold time from configuration based on input device ID. |
| Parameters | device_id: Device number (1, 2, 3 correspond to DO1, DO2, DO3 respectively). |
| Return Value | -1: Failure. 0: Success. |
Example:
int8_t res = send_signal_on(1);Digital Output Control (Function send_signal_on with hold time)
| API | int8_t send_signal_on(int device_id, int keeptime) |
|---|---|
| Description | Start independent thread to manage signal duration and status. |
| Parameters | device_id: Device number (1, 2, 3 correspond to DO1, DO2, DO3 respectively). keeptime: Signal hold time. |
| Return Value | -1: Failure. 0: Success. |
Example:
int8_t res = send_signal_on(1, 5000);Digital Output Signal Off Control (Function send_signal_off)
| API | int8_t send_signal_off(int device_id) |
|---|---|
| Description | Send clear signal to specified device (e.g., do1, do2, do3). |
| Parameters | device_id: Device number (1, 2, 3 correspond to DO1, DO2, DO3 respectively). |
| Return Value | 0: Success. -1: Failure. |
Example:
int8_t res = send_signal_off(1);Signal Type Definition (Enum SignalType)
| Member Variable | Type | Default | Description |
|---|---|---|---|
| OFF | uint8_t | 0 | Disable signal output |
| NG_SIGNAL | uint8_t | NG signal output mode | |
| ALARM_SIGNAL | uint8_t | Alarm signal output mode | |
| OK_SIGNAL | uint8_t | OK signal output mode |
Signal Type Definition (Enum SignalMode)
| Member Variable | Type | Default | Description |
|---|---|---|---|
| IO_MODE | uint8_t | 0 | IO mode |
| TCP_MODE | uint8_t | 1 | TCP mode |
| MODBUS_MODE | uint8_t | 2 | MODBUS mode |
| UART_MODE | uint8_t | 3 | UART mode |
Task Phase Type Definition (Enum SPhase)
| Member Variable | Type | Description |
|---|---|---|
| OPEN_CAMERA_ING_ENUM1 | 1 | Opening camera |
| OPEN_CAMERA_SUC_ENUM2 | Camera opened successfully | |
| OPEN_CAMERA_FAIL_ENUM3 | Camera opening failed | |
| LOAD_MODEL_ING_ENUM4 | Loading model | |
| LOAD_MODEL_SUC_ENUM5 | Model loaded successfully | |
| LOAD_MODEL_FAIL_ENUM6 | Model loading failed | |
| WAIT_IMAGE_ING_ENUM7 | Waiting for image |
Get SDK Version## Get SDK Version Information (Function get_build_version)
| API | const char *get_build_version() |
|---|---|
| Description | Get SDK version information. |
| Parameters | None |
| Return Value | SDK version string |
Example:
// Get SDK version information
const char* res = get_build_version();Get Build Timestamp (Function get_build_meta)
| API | const char *get_build_meta(void) |
|---|---|
| Description | Build timestamp. |
| Parameters | None |
| Return Value | Timestamp at compile time. |
Example:
// Get SDK version information
const char* res = get_build_meta();Get Build ID (Function get_build_id)
| API | const char *get_build_id(void) |
|---|---|
| Description | Identify code version. |
| Parameters | None |
| Return Value | Git commit hash. |
Example:
// Get SDK version information
const char* res = get_build_id();Get Latest Log Message (Function log_last_msg)
| API | const char* log_last_msg(SVLogLevel log_level) |
|---|---|
| Description | Get latest log message. |
| Parameters | SVLogLevel log level |
| Return Value | Latest log record |
Example:
// Get latest log message
const char* res = log_last_msg(log_level);Get Camera Configuration (Function get_camera_setting)
| API | string get_camera_setting(int8_t idx = 0) |
|---|---|
| Description | Get camera configuration parameters. |
| Parameters | idx: Camera index. Default is 0. Can use default value without input. |
| Return Value | JSON format string |
Example:
string res = get_camera_setting();Get Camera Configuration (Function get_camera_info)
| API | string get_camera_info(int8_t idx = 0) |
|---|---|
| Description | Get corresponding configuration file path based on camera index, read and parse JSON format camera configuration. |
| Parameters | idx: Camera index. |
| Return Value | Success: JSON format string containing camera configuration. Failure: Empty string (""). |
Example:
std::string info = Aidlux::SmartVision::get_camera_info(0);Get Complete Configuration (Function get_camera_default_setting)
| API | string get_camera_default_setting(int8_t idx = 0) |
|---|---|
| Description | Load default configuration via camera index, get complete configuration string and sync to system singleton. |
| Parameters | idx: Camera index. |
| Return Value | Success: JSON format string containing camera configuration. Failure: Empty string (""). |
Example:
std::string setting = Aidlux::SmartVision::get_camera_default_setting(0);Get Sensor Model Information (Function get_sensor_model_info)
| API | string get_sensor_model_info(int idx) |
|---|---|
| Description | Get sensor model information. |
| Parameters | idx: Camera index. |
| Return Value | Success: String containing sensor model information. Failure: Empty string (""). |
Example:
std::string setting = Aidlux::SmartVision::get_sensor_model_info(0);Get All Camera IDs (Function get_all_cam_ids)
| API | std::vector<std::string> get_all_cam_ids(bool disable_cache = false) |
|---|---|
| Description | Decide whether to read from local configuration or detect all camera model names in real-time based on cache disabling. |
| Parameters | disable_cache (true: Force re-detection, clear cache. false: Use cached data, no re-detection). |
| Return Value | List of SensorName strings for all successfully identified cameras. |
Example:
auto camera_list = get_all_cam_ids(false); // Use cacheGet All Indices (Function get_all_cam_index)
| API | std::vector<int> get_all_cam_index() |
|---|---|
| Description | Get all indices. |
| Parameters | None |
| Return Value | Collection of all camera indices. |
Example:
auto camera_list = get_all_cam_index();Get Camera Information (Function get_all_cameras)
| API | std::unordered_map<int, std::string> get_all_cameras(bool disable_cache = false) |
|---|---|
| Description | Call underlying detection logic to get all camera information. |
| Parameters | disable_cache (true: Force re-detection, clear cache. false: Use cached data, no re-detection). |
| Return Value | Key: Camera physical location ID (e.g., 0, 1, 2). Value: Corresponding sensor name. |
Example:
auto cameras = get_all_cameras(false); // Use cacheGet Index by Location ID (Function get_idx_by_loc_id)
| API | int get_idx_by_loc_id(int loc_id) |
|---|---|
| Description | Find corresponding logical index (cam_id or idx) based on camera's physical location ID (loc_id). |
| Parameters | loc_id: Physical location identifier. |
| Return Value | Success: Corresponding logical index. Failure: -1. |
Example:
int idx = get_idx_by_loc_id(1); // Assume loc_id=1 corresponds to idx=0 �?returns 0Get Location ID by Index (Function get_loc_id_by_idx)
| API | int get_loc_id_by_idx(int idx) |
|---|---|
| Description | Reverse lookup physical location ID (loc_id) based on camera's logical index (idx). |
| Parameters | idx: Camera index. |
| Return Value | Success: Corresponding loc_id. Failure: -1. |
Example:
int loc_id = get_loc_id_by_idx(0); // Assume idx=0 comes from loc_id=1 �?returns 1Get Logical Index (Function get_cam_index)
| API | int get_cam_index(std::string cam_id) |
|---|---|
| Description | Find corresponding logical index by camera name. |
| Parameters | cam_id: Camera name. |
| Return Value | Success: Corresponding logical index (e.g., 0, 1, 2). Failure: -1. |
Example:
int idx = get_cam_index("OV5645");Get Camera Name (Function get_cam_id)
| API | string get_cam_id(int cam_index) |
|---|---|
| Description | Find and return corresponding camera name based on logical index. |
| Parameters | cam_index: Camera logical index. |
| Return Value | Success: Corresponding camera name. Failure: Empty string "". |
Example:
std::string cam_name = get_cam_id(0);Get Current Camera Status (Function get_camera_status)
| API | int8_t get_camera_status(int8_t idx = 0) |
|---|---|
| Description | Record and return current status code of specified camera index via logs. |
| Parameters | idx: Camera logical index. |
| Return Value | Camera status code defined by CameraSIns. |
Example:
int8_t status = get_camera_status(0);Get Camera Status from FIFO (Function get_camera_status_fifo)
| API | int get_camera_status_fifo(int idx = 0) |
|---|---|
| Description | Query the latest GST status received from the camera status FIFO. |
| Parameters | idx: Camera logical index. |
| Return Value | 0: gst_state. 1: gst_error. 2: gst_eos. -1: Unavailable. |
Example:
int fifo_status = get_camera_status_fifo(0);Send Task Notification (Function notify_sve)
| API | int8_t notify_sve(SPhase phase_enum) |
|---|---|
| Description | Send current task phase notification to local SVE service via HTTP (POST) request. |
| Parameters | phase_enum: Enum value representing current task status (OPEN_CAMERA_ING_ENUM1 = 1, OPEN_CAMERA_SUC_ENUM2). |
| Return Value | 0: Request sent successfully and response received. -1: Initialization failed or error occurred. |
Example:
int8_t res = notify_sve(SPhase::OPEN_CAMERA_ING_ENUM1);Upload Content to SVE Service (Function save_result)
| API | 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 = "") |
|---|---|
| Description | Package image analysis task result file paths and additional information as JSON and report to local SVE service. |
| Parameters | release_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 Value | 0: Success. -1: Failure. |
Example:
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)
| API | int8_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 = "") |
|---|---|
| Description | Save result images from OpenCV matrices and submit them for collection by SVE. |
| Parameters | release_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 Value | 0: Success. -1: Failure. |
Example:
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)
| API | int8_t save_result(const char *release_id, const char *release_version, const char *srcAddr = "./", const char *dstAddr = "/var/opt/aidlux/global/") |
|---|---|
| Description | Submit a directory copy result to SVE. |
| Parameters | release_id: Release/task ID. release_version: Version number. srcAddr: Source directory. dstAddr: Destination directory. |
| Return Value | 0: Success. -1: Failure. |
Example:
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)
| API | cv::Mat get_cvimage(Image &img, int idx, int max_timeout_ms) |
|---|---|
| Description | Get image data from specified index, convert to BGR three-channel matrix usable by OpenCV. |
| Parameters | img: Reference to Image struct for storing image data. idx: Camera logical index. max_timeout_ms: Maximum wait time in milliseconds. |
| Return Value | Success: Converted BGR image matrix. Failure: Empty matrix (cv::Mat()). |
Example:
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)
| API | void qmm_cleanup(int cam_id = 0, const char* comments = "NA") |
|---|---|
| Description | Send control signal in specific format to stop specified or all camera services. |
| Parameters | cam_id: Camera logical index. comments: Optional cleanup comment string. |
| Return Value | None. |
Example:
// Stop camera 0
qmm_cleanup(0);Close All Camera Services (Function qmm_cleanup_all)
| API | void qmm_cleanup_all() |
|---|---|
| Description | Send control signal in specific format to stop all camera services. |
| Parameters | None |
| Return Value | Loop through 3 cameras, call qmm_message("5" + to_string(i)) for each index, output logs for each send. |
Example:
qmm_cleanup_all();Clean Up Abnormal Processes (Function qmm_cleanup_invalid)
| API | void qmm_cleanup_invalid() |
|---|---|
| Description | Clean up qmm processes with abnormal status. |
| Parameters | None |
| Return Value | None |
Example:
qmm_cleanup_invalid();Process Check (Function qmm_status)
| API | int qmm_status(int idx = 0) |
|---|---|
| Description | Check if service process corresponding to specified camera index is alive, implemented based on Redis heartbeat mechanism. |
| Parameters | idx: Camera logical index. |
| Return Value | 2: Service running. 0: Not registered. 4: Service abnormal. |
Example:
int status = qmm_status(0);Start Recording (Function start_record)
| API | int start_record(int idx) |
|---|---|
| Description | Safely start camera video recording with multiple pre-checks. |
| Parameters | idx: Camera logical index. |
| Return Value | 0: Success. -1: Failure. |
Example:
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)
| API | int get_record_status() |
|---|---|
| Description | Query current video recording status. |
| Parameters | None |
| Return Value | 0: Recording. -1: Not recording. |
Example:
int record_status = Aidlux::SmartVision::get_record_status();
if (record_status == 0) {
CLOGI("Recording video...");
} else {
CLOGI("Not recording");
}Stop Recording (Function stop_record)
| API | MediaInfo stop_record(int idx) |
|---|---|
| Description | Stop camera recording process and extract recording result metadata from internal state. |
| Parameters | idx: Camera logical index. |
| Return Value | MediaInfo: Struct containing recording result information. May return default values even if recording failed. |
Example:
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)
| API | int set_bpp_binning(string cam_id, int binning_flag, int hb, int vb, int bpp_flag, int bpp) |
|---|---|
| Description | Specify camera pixel binning and bit depth. |
| Parameters | cam_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 Value | 0: Success. -1: Failure. |
Example:
// 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)
| API | bool isIPFormat(const char* str) |
|---|---|
| Description | Check if string is IPv4 or (full format) IPv6 address. |
| Parameters | str (const char*): String to check. |
| Return Value | true: String matches IPv4 or IPv6 format. false: Format mismatch or null pointer. |
Example:
std::cout << isIPFormat("192.168.1.1") << std::endl;File Existence Check (Function isFileExists)
| API | bool isFileExists(const std::string& filePath) |
|---|---|
| Description | Check if file path corresponds to existing file (or directory). |
| Parameters | filePath (const std::string&): File path to check. |
| Return Value | true: File or directory exists. false: Does not exist or access error. |
Example:
bool exists = Aidlux::SmartVision::isFileExists("/home/user/config.json");Create Signal File (Function createNewSignalFile)
| API | bool createNewSignalFile(const std::string& filePath) |
|---|---|
| Description | Create text file at specified path and write default JSON configuration. |
| Parameters | filePath (const std::string&): Path to new file. |
| Return Value | true: Created successfully. false: Failed to create. |
Example:
bool result = Aidlux::SmartVision::createNewSignalFile("/tmp/signal_config.json");Enable Zero-Copy Switch (Function enable_fd_switch)
| API | int enable_fd_switch(int idx, int flag) |
|---|---|
| Description | Enable or disable zero-copy switch for specified camera. |
| Parameters | idx: Camera index. flag: 0 to disable, 1 to enable. |
| Return Value | 0: Success. -1: Failure. |
Example:
int result = Aidlux::SmartVision::enable_fd_switch(0, 1);Get File Descriptor with Metadata (Function get_fd_with_meta)
| API | int get_fd_with_meta(int idx, AidluxSocketfdInfo &out_meta, bool customize = false) |
|---|---|
| Description | Get file descriptor for specified camera and return file descriptor data. |
| Parameters | idx: Camera index. out_meta: Output parameter for returning file descriptor metadata. customize: Optional customization flag. |
| Return Value | File descriptor. -1 on failure. |
Example:
AidluxSocketfdInfo meta;
int fd = Aidlux::SmartVision::get_fd_with_meta(0, meta);Disconnect Zero-Copy (Function disconnect)
| API | void disconnect(int idx) |
|---|---|
| Description | Disconnect zero-copy connection for specified camera index. |
| Parameters | idx: Camera index. |
| Return Value | None |
Example:
Aidlux::SmartVision::disconnect(0);Get Camera Real-Time Information (Function get_camera_rt_info)
| API | SVSdkMemfdInfo get_camera_rt_info(int idx) |
|---|---|
| Description | Get real-time information for specified camera index. |
| Parameters | idx: Camera index. |
| Return Value | SVSdkMemfdInfo struct containing real-time camera information. |
Example:
SVSdkMemfdInfo info = Aidlux::SmartVision::get_camera_rt_info(0);Get Camera Real-Time Information in FD Mode (Function get_camera_rt_info_f)
| API | AidluxSocketfdInfo get_camera_rt_info_f(int idx) |
|---|---|
| Description | Get real-time camera information in FD mode for specified camera index. |
| Parameters | idx: Camera index. |
| Return Value | AidluxSocketfdInfo struct containing real-time FD-mode metadata. |
Example:
AidluxSocketfdInfo fd_info = Aidlux::SmartVision::get_camera_rt_info_f(0);Get Camera Capture Status (Function get_camera_capture_status)
| API | bool get_camera_capture_status(int idx = 0) |
|---|---|
| Description | Check if specified camera is capturing images. |
| Parameters | idx: Camera index. |
| Return Value | true: Capturing. false: Not capturing. |
Example:
bool is_capturing = Aidlux::SmartVision::get_camera_capture_status(0);Get Running Metadata (Function get_running_metadata)
| API | bool get_running_metadata(int cam_id, RunningMetaData& out_meta) |
|---|---|
| Description | Get runtime metadata for specified camera. |
| Parameters | cam_id: Camera ID. out_meta: Output parameter for returning metadata. |
| Return Value | true: Success. false: Failure. |
Example:
RunningMetaData meta;
bool result = Aidlux::SmartVision::get_running_metadata(0, meta);Set Binning and Bit Depth Data (Function set_bpp_binning_data)
| API | bool set_bpp_binning_data(int height, int width, int framerate, int idx) |
|---|---|
| Description | Set camera pixel binning and bit depth data. |
| Parameters | height: Image height. width: Image width. framerate: Frame rate. idx: Camera index. |
| Return Value | true: Success. false: Failure. |
Example:
bool result = Aidlux::SmartVision::set_bpp_binning_data(1080, 1920, 30, 0);Compute Color Correction Matrix (Function computeCCM3x3FromImage)
| API | std::array<std::array<double, 3>, 3> computeCCM3x3FromImage(const cv::Mat &bgr, const cv::Point2f corners[4], double innerScale) |
|---|---|
| Description | Compute 3x3 color correction matrix from image. |
| Parameters | bgr: Input BGR image. corners: 4 corner points. innerScale: Inner scale factor. |
| Return Value | 3x3 color correction matrix. |
Example:
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)
| API | std::array<int, 18> ccmToAndroidColorTransform(const cv::Mat &bgr, const cv::Point2f corners[4], int denom = 10000, double innerScale = 0.5) |
|---|---|
| Description | Convert a computed CCM to the Android color transform format. |
| Parameters | bgr: 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 Value | Flattened 3x3 color transform represented as 18 integers. |
Example:
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)
| API | std::string get_alltonemap_data(int cameraindex) |
|---|---|
| Description | Retrieves all tone mapping curve data for the camera. |
| Parameters | cameraindex: The camera index. |
| Return Value | A JSON string containing the list of coordinates for each channel. |
Example:
std::string tonemap_data = Aidlux::SmartVision::get_alltonemap_data(0);Get Tone Mapping Point (Function get_tonemap_point)
| API | std::string get_tonemap_point(int cameraindex, const std::string& channel, size_t index) |
|---|---|
| Description | Retrieves a specific tone mapping point for a specified channe. |
| Parameters | cameraindex: The camera index.channel: The channel name, e.g., "red", "green", or "blue".index: The tone mapping point index. |
| Return Value | A JSON coordinate string in the format "[x, y]"; returns an empty string on failure. |
Example:
std::string point = Aidlux::SmartVision::get_tonemap_point(0, "red", 5);Generate Gamma Curves (Function generate_gamma_curves)
| API | std::string generate_gamma_curves(int num_points, float gamma) |
|---|---|
| Description | Generates standard gamma correction curves. |
| Parameters | num_points: The number of points per curve.gamma: The gamma correction value. |
| Return Value | A JSON string containing RGB gamma curve data. |
Example�?
std::string gamma_curves = Aidlux::SmartVision::generate_gamma_curves(256, 2.2f);Generate Gamma Curves Variant 1 (Function generate_gamma_curves1)
| API | std::string generate_gamma_curves1(int num_points, float gamma) |
|---|---|
| Description | Generates standard gamma correction curves (variant 1). |
| Parameters | num_points: The number of points per curve. gamma: The gamma correction value. |
| Return Value | A JSON string containing RGB gamma curve data. |
Example�?
std::string gamma_curves1 = Aidlux::SmartVision::generate_gamma_curves1(256, 2.2f);Get IO Mode Value (Function get_mode_value)
| API | int8_t get_mode_value() |
|---|---|
| Description | Retrieves the current signal output mode value. |
| Parameters | None |
| Return Value | The current mode value (0: IO_MODE, 1: TCP_MODE, 2: MODBUS_MODE, 3: UART_MODE). |
Example�?
int8_t mode = Aidlux::SmartVision::get_mode_value();Get IO Keep Time (Function get_io_keeptime)
| API | int get_io_keeptime(int device_id) |
|---|---|
| Description | Retrieves the keep time for a specified device (e.g., do1, do2, do3). |
| Parameters | device_id: The device ID (1, 2, and 3 correspond to DO1, DO2, and DO3 respectively). |
| Return Value | The keep time value in milliseconds. |
Example�?
int keeptime = Aidlux::SmartVision::get_io_keeptime(1);