Camera相機人臉識別系列專題分析之十六:人臉特征檢測FFD算法之libcvface_api.so數據結構詳細注釋解析

【關注我,后續持續新增專題博文,謝謝!!!】

上一篇我們講了

? ? ? ? 這一篇我們開始講?Camera相機人臉識別系列專題分析之十六:人臉特征檢測FFD算法之libcvface_api.so數據結構詳細注釋解析

目錄

一、libcvface_api.so數據結構詳細注釋解析


一、libcvface_api.so數據結構詳細注釋解析

/// @brief 人臉信息結構體
typedef struct cv_face_t
{cv_rect_t rect;  ///< 代表面部的矩形區域float score;  ///< 置信度,用于篩除負例,與人臉照片質量無關,值越高表示置信度越高。float yaw;    ///< 水平轉角,真實度量的左負右正float pitch;  ///< 俯仰角,真實度量的上負下正float roll;   ///< 旋轉角,真實度量的左負右正float eye_dist;  ///< 兩眼間距int ID;  ///< faceID,用于表示在實時人臉跟蹤中的相同人臉在不同幀多次出現,在人臉檢測的結果中無實際意義cv_landmarks_t landmarks;cv_pointf_t points_more[512];  ///< 全部關鍵點信息(不開啟240狀態下默認僅包含106 + 新增的31額頭關鍵點 = 137)// unsigned char occlusion[512];  ///< 遮擋點信息int points_count;  ///< 全部關鍵點數量unsigned char occlusion[512];               ///< 遮擋點信息
} cv_face_t;/// @brief 分割信息結構體
/// 若嘴唇分割模型輸出小于低閾值,即無遮擋,口紅效果不變。
/// 若嘴唇分割模型輸出大于高閾值,為遮擋,輸出原始嘴唇像素值。
/// 若嘴唇分割模型輸出在高低閾值之間,做透明度過渡。
typedef struct cv_face_segment_t
{cv_image_t* mask;/// mask數據,gray類型,像素范圍0-255float mouth_score;///用來緩解嘴唇分割模型在無遮擋場景誤判的問題float min_thr;///無遮擋胖定閾值float max_thr;///遮擋判定閾值cv_pointf_t offset;///mask位于原圖的左上角坐標
}cv_face_segment_t;typedef struct cv_face_matrix_attribute_t
{int gender;float age;float smile;int race;
} cv_face_matrix_attribute_t;// @brief 質量信息結構體
typedef struct cv_selector_message
{float integrity;      // 臉部畫面完成度,[0, 1]float summary_score;  // 匯總后的質量分數,大部分位于[0, 1],但不保證
} cv__selector_message;/// 人臉檢測、跟蹤配置選項
#define CV_FACE_DEFAULT_CONFIG      0x00000000    ///< 默認選項,不設置任何開關
#define CV_FACE_RESIZE_IMG_320W     0x00000002   ///< resize圖像為長邊320的圖像
#define CV_FACE_RESIZE_IMG_480W     0x00000004   ///< resize圖像為長邊480的圖像
#define CV_FACE_RESIZE_IMG_640W     0x00000008   ///< resize圖像為長邊640的圖像
#define CV_FACE_RESIZE_IMG_720W     0x00000010   ///< resize圖像為長邊720的圖像
#define CV_FACE_RESIZE_IMG_960W     0x00000020   ///< resize圖像為長邊960的圖像
#define CV_FACE_RESIZE_IMG_1080W    0x00000040  ///< resize圖像為長邊1080的圖像
#define CV_FACE_RESIZE_IMG_1280W    0x00000080  ///< resize圖像為長邊1280的圖像/// high precision keypoints config flags
#define CV_FACE_ENABLE_HIGH_PRECISION_LIPS              0x00001000     ///< 開啟嘴唇精度優化。
#define CV_FACE_ENABLE_HIGH_PRECISION_EYE               0x00002000      ///< 開啟眼眶精度優化。預留字段,暫未啟用。
#define CV_FACE_ENABLE_HIGH_PRECISION_EYEBROW           0x00004000  ///< 開啟眉毛精度優化。預留字段,暫未啟用。
#define CV_FACE_ENABLE_HIGH_PRECISION_IRIS              0x00008000     ///< 開啟瞳孔點。預留字段,暫未啟用。/// detect main obj flag
#define CV_FACE_ENABLE_MAIN_OBJECT_TRACK                0x00020000  ///< 開啟主體追蹤功能#define CV_FACE_ENABLE_MIDDLE_PRECISION_KEYPOINTS       0x02000000  ///< 開啟中等精度282關鍵點模式
#define CV_FACE_ENABLE_LOW_PRECISION_KEYPOINTS          0x01000000  ///< 開啟低精度關鍵點模式,僅輸出137點(106+31額頭點)/// detect config flags, 0x----00-- ~ 0x----FF--
#define CV_DETECT_ENABLE_ALIGN_21                       0x00000100   ///< 開啟面部關鍵21點檢測選項
#define CV_DETECT_ENABLE_ALIGN_106                      0x00000200  ///< 開啟面部關鍵106點檢測選項
#define CV_DETECT_ENABLE_ALIGN_296                      0x00000400  ///< 開啟面部關鍵296點檢測選項/// 該版本sdk未開啟此功能(如:面部關鍵21點檢測版本傳入了面部關鍵106點檢測參數)
#define CV_E_UNSURPPORTED (-1000)
/// 指定位置未找到license.lic文件
#define CV_E_MISSLICENSE (-1001)
/// cv_face_init_license_config 函數被重復調用
#define CV_E_MULTI_CALLS (-1002)/// @brief  人臉朝向
typedef enum
{CV_FACE_UP = 0x0000001,     ///< 人臉向上,即人臉朝向正常CV_FACE_LEFT = 0x0000002,   ///< 人臉向左,即人臉被逆時針旋轉了90度CV_FACE_DOWN = 0x0000004,   ///< 人臉向下,即人臉被逆時針旋轉了180度CV_FACE_RIGHT = 0x0000008,  ///< 人臉向右,即人臉被逆時針旋轉了270度CV_FACE_UNKNOWN = 0xf  ///< 人臉朝向未知,API自動判斷人臉朝向,耗時增加。face_track不支持此參數,等同于CV_FACE_UP
} cv_face_orientation;//>> CONFIG_ST_FACE_API_COLOR_CONVERT
// ===================== color convert ====================
typedef enum
{CV_BGRA_YUV420P = 0,   ///< CV_PIX_FMT_BGRA8888到CV_PIX_FMT_YUV420P轉換CV_BGR_YUV420P = 1,    ///< CV_PIX_FMT_BGR888到CV_PIX_FMT_YUV420P轉換CV_BGRA_NV12 = 2,      ///< CV_PIX_FMT_BGRA8888到CV_PIX_FMT_NV12轉換CV_BGR_NV12 = 3,       ///< CV_PIX_FMT_BGR888到CV_PIX_FMT_NV12轉換CV_BGRA_NV21 = 4,      ///< CV_PIX_FMT_BGRA8888到CV_PIX_FMT_NV21轉換CV_BGR_NV21 = 5,       ///< CV_PIX_FMT_BGR888到CV_PIX_FMT_NV21轉換CV_YUV420P_BGRA = 6,   ///< CV_PIX_FMT_YUV420P到CV_PIX_FMT_BGRA8888轉換CV_YUV420P_BGR = 7,    ///< CV_PIX_FMT_YUV420P到CV_PIX_FMT_BGR888轉換CV_NV12_BGRA = 8,      ///< CV_PIX_FMT_NV12到CV_PIX_FMT_BGRA8888轉換CV_NV12_BGR = 9,       ///< CV_PIX_FMT_NV12到CV_PIX_FMT_BGR888轉換CV_NV21_BGRA = 10,     ///< CV_PIX_FMT_NV21到CV_PIX_FMT_BGRA8888轉換CV_NV21_BGR = 11,      ///< CV_PIX_FMT_NV21到CV_PIX_FMT_BGR888轉換CV_BGRA_GRAY = 12,     ///< CV_PIX_FMT_BGRA8888到CV_PIX_FMT_GRAY8轉換CV_BGR_BGRA = 13,      ///< CV_PIX_FMT_BGR888到CV_PIX_FMT_BGRA8888轉換CV_BGRA_BGR = 14,      ///< CV_PIX_FMT_BGRA8888到CV_PIX_FMT_BGR888轉換CV_YUV420P_GRAY = 15,  ///< CV_PIX_FMT_YUV420P到CV_PIX_FMT_GRAY8轉換CV_NV12_GRAY = 16,     ///< CV_PIX_FMT_NV12到CV_PIX_FMT_GRAY8轉換CV_NV21_GRAY = 17,     ///< CV_PIX_FMT_NV21到CV_PIX_FMT_GRAY8轉換CV_BGR_GRAY = 18,      ///< CV_PIX_FMT_BGR888到CV_PIX_FMT_GRAY8轉換CV_GRAY_YUV420P = 19,  ///< CV_PIX_FMT_GRAY8到CV_PIX_FMT_YUV420P轉換CV_GRAY_NV12 = 20,     ///< CV_PIX_FMT_GRAY8到CV_PIX_FMT_NV12轉換CV_GRAY_NV21 = 21,     ///< CV_PIX_FMT_GRAY8到CV_PIX_FMT_NV21轉換CV_NV12_YUV420P = 22,  ///< CV_PIX_FMT_GRAY8到CV_PIX_FMT_NV21轉換CV_NV21_YUV420P = 23,  ///< CV_PIX_FMT_GRAY8到CV_PIX_FMT_NV21轉換CV_NV21_RGBA = 24,     ///< CV_PIX_FMT_NV21到CV_PIX_FMT_RGBA轉換CV_BGR_RGBA = 25,      ///< CV_PIX_FMT_BGR到CV_PIX_FMT_RGBA轉換CV_BGRA_RGBA = 26,     ///< CV_PIX_FMT_BGRA到CV_PIX_FMT_RGBA轉換CV_RGBA_BGRA = 27,     ///< CV_PIX_FMT_RGBA到CV_PIX_FMT_BGRA轉換CV_GRAY_BGR = 28,      ///< CV_PIX_FMT_GRAY8到CV_PIX_FMT_BGR888轉換CV_GRAY_BGRA = 29,     ///< CV_PIX_FMT_GRAY8到CV_PIX_FMT_BGRA8888轉換CV_NV12_RGBA = 30,     ///< CV_PIX_FMT_NV12到CV_PIX_FMT_RGBA8888轉換CV_NV12_RGB = 31,      ///< CV_PIX_FMT_NV12到CV_PIX_FMT_RGB888轉換CV_RGBA_NV12 = 32,     ///< CV_PIX_FMT_RGBA8888到CV_PIX_FMT_NV12轉換CV_RGB_NV12 = 33,      ///< CV_PIX_FMT_RGB888到CV_PIX_FMT_NV12轉換CV_RGBA_BGR = 34,      ///< CV_PIX_FMT_RGBA888到CV_PIX_FMT_BGR888轉換CV_BGRA_RGB = 35,      ///< CV_PIX_FMT_BGRA888到CV_PIX_FMT_RGB888轉換CV_RGBA_GRAY = 36,CV_RGB_GRAY = 37,CV_RGB_BGR = 38,CV_BGR_RGB = 39,CV_YUV420P_RGBA = 40,CV_RGBA_YUV420P = 41
} cv_color_convert;//>> CONFIG_ST_FACE_API_ATTRIBUTE/// @defgroup cvface_attribute cvface attribute
/// @brief face attribute detection interfaces
///
/// This set of interfaces detect face attribute like emotion, accessories etc.
///
/// @{/// 推薦閥值設置為50,可根據實際場景進行微調typedef enum
{CV_FEATURE_AGE = 0,           ///< 年齡 0 - 100CV_FEATURE_GENDER_MALE = 1,   ///< 性別 為男性的百分比置信度(0-100)CV_FEATURE_ATTRACTIVE = 2,    ///< 魅力 0 - 100CV_FEATURE_EYEGLASS = 3,      ///< 眼鏡 百分比置信度(0-100)CV_FEATURE_SUNGLASS = 4,      ///< 太陽鏡 百分比置信度(0-100)CV_FEATURE_SMILE = 5,         ///< 微笑 百分比置信度(0-100)CV_FEATURE_MASK = 6,          ///< 面具 百分比置信度(0-100)CV_FEATURE_RACE = 7,          ///< 種族 Yellow 0, Black 1,White 2CV_FEATURE_EYE_OPEN = 8,      ///< 眼睛睜開 百分比置信度(0-100)CV_FEATURE_MOUTH_OPEN = 9,    ///< 嘴巴張開 百分比置信度(0-100)CV_FEATURE_BEARD = 10,        ///< 有胡子 百分比置信度(0-100)CV_FEATURE_LUMA = 11,         ///< 膚色 百分比置信度(0-100)CV_FEATURE_SKIN = 12,         ///< 膚質 百分比置信度(0-100)CV_FEATURE_QUAILITY = 13,     ///< 人臉質量 百分比置信度(0-100)CV_FEATURE_COVER = 14,        ///< 遮擋 百分比置信度(0-100)CV_FEATURE_EXPRESSION = 15,   ///< 表情 百分比置信度(0-100)CV_FEATURE_QUALITY_PIC = 16,  ///< 圖片質量 百分比置信度(0-100)CV_FEATURE_LUMA_U = 17,       ///< 膚色,U通道 百分比置信度(0-100)CV_FEATURE_LUMA_V = 18,       ///< 膚色,V通道 百分比置信度(0-100)CV_FEATURE_RACE_YELLOW = 20,  ///< 種族-黃 百分比置信度(0-100)CV_FEATURE_RACE_BLACK = 21,   ///< 種族-黑 百分比置信度(0-100)CV_FEATURE_RACE_WHITE = 22,   ///< 種族-白 百分比置信度(0-100)CV_FEATURE_RACE_BROWN = 23,   ///< 種族-棕 百分比置信度(0-100)CV_FEATURE_LENGTH = 32        ///< 屬性條目數
} cv_attribute_feature_type;/// 表情為置信度最高的選項
typedef enum
{CV_EMOTION_ANGRY = 0,      ///< 憤怒 百分比置信度(0-100)CV_EMOTION_CALM = 1,       ///< 平靜 百分比置信度(0-100)CV_EMOTION_CONFUSED = 2,   ///< 困惑 百分比置信度(0-100)CV_EMOTION_DISGUST = 3,    ///< 厭惡 百分比置信度(0-100)CV_EMOTION_HAPPY = 4,      ///< 高興 百分比置信度(0-100)CV_EMOTION_SAD = 5,        ///< 悲傷 百分比置信度(0-100)CV_EMOTION_SCARED = 6,     ///< 驚恐 百分比置信度(0-100)CV_EMOTION_SURPRISED = 7,  ///< 詫異 百分比置信度(0-100)CV_EMOTION_SQUINT = 8,     ///< 斜視 百分比置信度(0-100)CV_EMOTION_SCREAM = 9,     ///< 尖叫 百分比置信度(0-100)CV_EMOTION_LENGTH = 32     ///< 屬性條目數 百分比置信度(0-100)
} cv_attribute_emotion_type;#define CV_E_COMMON_LIB 0x19
#define CV_E_COMMON_MODULE_FOUNDATION 0x00
#define CV_E_COMMON_MODULE_DETECTION 0x01#define CV_E_COMMON_DETECTION_CAPABILITY_NOT_SUPPORTED \CV_ERR_PACK(CV_E_COMMON_LIB, CV_E_COMMON_MODULE_DETECTION, 0x01)  ///< 不支持的detection輸出
#define CV_E_COMMON_SUBMODULE_NON_EXIT \CV_ERR_PACK(CV_E_COMMON_LIB, CV_E_COMMON_MODULE_FOUNDATION, 0x03)  ///< 子模型不存在
#define CV_E_COMMON_FEATURE_ILLEGAL_VALUE \CV_ERR_PACK(CV_E_COMMON_LIB, CV_E_COMMON_MODULE_FOUNDATION, 0x04)  ///< 特征值非法/// cv handle declaration
typedef void *cv_handle_t;/// cv result declaration
typedef cv_errcode cv_result_t;/// cv rectangle definition
typedef struct cv_rect_t
{int left;    ///< 矩形最左邊的坐標int top;     ///< 矩形最上邊的坐標int right;   ///< 矩形最右邊的坐標int bottom;  ///< 矩形最下邊的坐標
} cv_rect_t;/// cv float type point definition
typedef struct cv_pointf_t
{float x;  ///< 點的水平方向坐標, 為浮點數float y;  ///< 點的豎直方向坐標, 為浮點數
} cv_pointf_t;/// cv integer type point definition
typedef struct cv_pointi_t
{int x;  ///< 點的水平方向坐標, 為整數int y;  ///< 點的豎直方向坐標, 為整數
} cv_pointi_t;/// cv float type 3d point definition
typedef struct cv_point3f_t
{float x;  ///< 點的水平方向坐標, 為浮點數float y;  ///< 點的豎直方向坐標, 為浮點數float z;  ///< 點的深度坐標, 為浮點數
} cv_point3f_t;/// pose definition
typedef struct cv_pose_t
{float yaw;    ///< 圍繞Y軸旋轉,也叫偏航角float pitch;  ///< 圍繞X軸旋轉,也叫做俯仰角float roll;   ///< 圍繞Z軸旋轉,也叫翻滾角
} cv_pose_t;typedef struct cv_landmarks_extra_info_t
{float affine_mat[3][3];    ///< 仿射變換矩陣cv_point3f_t *points_ori;  ///< 原始關鍵點數組int points_count;          ///< 關鍵點數量int model_input_size;float left_eye_score; ///< 左眼球置信度float right_eye_score; ///< 右眼球置信度float mouth_score; ///< 嘴部遮擋置信度
} cv_landmarks_extra_info_t;/// cv landmarks array struct
typedef struct cv_landmarks_t
{cv_point3f_t *points_array;  ///< 關鍵點數組unsigned char *occlusion;int points_count;  ///< 關鍵點數量int label;         ///< tracking得到float score;       ///< 關鍵點置信的labelfloat label_score;void *extra_info;  ///< the real type is cv_landmarks_extra_info_t* or others, it's up to the modelsfloat *points_score;unsigned int reserved1;unsigned int reserved2;
} cv_landmarks_t;/// @brief detection結果
typedef struct cv_detection_result_t
{cv_rect_t rect;   ///< 結果rectfloat score;      ///< 結果分數int label;        ///< 結果標簽int orientation;  ///< 結果朝向unsigned int reserved1;unsigned int reserved2;
} cv_detection_result_t;/// @brief 關鍵點
typedef struct cv_keypoint_t
{cv_pointf_t point;  ///< 關鍵點float score;        ///< 關鍵點置信度unsigned int reserved1;unsigned int reserved2;
} cv_keypoint_t;/// @brief 跟蹤結果
typedef struct cv_target_t
{cv_detection_result_t detect_result;  ///< 框cv_landmarks_t landmarks;             ///< 關鍵點int id;  ///< 目標ID, 用于表示在目標跟蹤中的相同目標在不同幀多次出現
} cv_target_t;/// @brief template track中間狀態
typedef struct cv_template_state_t
{cv_rect_t rect;float score;float angle;int corr_feature_size;float* corr_feature;
} cv_template_state_t;/// @brief template track跟蹤結果
typedef struct cv_template_target_t
{cv_detection_result_t detect_result;  ///< 框cv_landmarks_t landmarks;             ///< 關鍵點int id;  ///< 目標ID, 用于表示在目標跟蹤中的相同目標在不同幀多次出現cv_template_state_t state;
} cv_template_target_t;/// @brief template track 跟蹤結果new
typedef struct cv_template_track_target_t
{cv_detection_result_t detect_result;            ///< 框int id;                ///< 目標ID, 用于表示在目標跟蹤中的相同目標在不同幀多次出現cv_template_state_t state;
} cv_template_track_target_t;/// @brief template facial track 跟蹤結果
typedef struct cv_template_facial_track_target_t
{cv_template_track_target_t track_target;cv_landmarks_t landmarks;
} cv_template_facial_track_target_t;
/// @brief template universal track 跟蹤結果
typedef struct cv_template_universal_track_target_t
{cv_template_track_target_t track_target;
} cv_template_universal_track_target_t;/// @brief pose refine結果
typedef struct cv_template_pose_refine_t {cv_rect_t rect;     ///< 框cv_rect_t rect_in_origin;   ///<原圖框float score;        ///< 分float angle;        ///< 角
} cv_template_pose_refine_t;
/// 相機類型
typedef enum
{CV_PROJECTION = 0,  ///< 投影相機CV_ORTHO = 1,       ///< 正交相機CV_DEPTH = 2,       ///< 深度相機
} cv_camera_type;/// 相機內參
typedef struct cv_intrinsic_param_t
{cv_camera_type camera_type;     ///< 相機類型int calib_width, calib_height;  ///< 相機標定時分辨率float camera_matrix[3][3];      ///< 相機內參矩陣 [ fx, 0.0f, cx | 0.0f, fy, cy | 0.0f, 0.0f, 1.0f ]float dist_coeffs[8];           ///< 相機畸變參數 [ k1, k2, p1, p2, k3, k4, k5, k6 ]void *ext;                      ///< 其他畸變計算
} cv_intrinsic_param_t;typedef struct cv_extrinsic_param_t
{float rotation_matrix[3][3];  ///< 旋轉矩陣float translation[3];         ///< 平移向量
} cv_extrinsic_param_t;/// @brief 朝向信息
typedef enum
{CV_ORIENTATION_0 = 0,    ///< 不做旋轉預處理CV_ORIENTATION_90 = 1,   ///< 預處理圖像, 將輸入圖像順時針旋轉90度, 再執行后續操作CV_ORIENTATION_180 = 2,  ///< 預處理圖像, 將輸入圖像順時針旋轉180度, 再執行后續操作CV_ORIENTATION_270 = 3,  ///< 預處理圖像, 將輸入圖像順時針旋轉270度, 再執行后續操作
} cv_orientation;/// cv pixel format definition,注意,某些算法可能僅僅支持部分圖像格式
typedef enum
{CV_PIX_FMT_GRAY8,    ///< Y    1       8bpp ( 單通道8bit灰度像素 )CV_PIX_FMT_YUV420P,  ///< YUV  4:2:0   12bpp ( 3通道, 一個亮度通道, 另兩個為U分量和V分量通道, 所有通道都是連續的 )CV_PIX_FMT_NV12,  ///< YUV  4:2:0   12bpp ( 2通道, 一個通道是連續的亮度通道, 另一通道為UV分量交錯 )CV_PIX_FMT_NV21,  ///< YUV  4:2:0   12bpp ( 2通道, 一個通道是連續的亮度通道, 另一通道為VU分量交錯 )CV_PIX_FMT_BGRA8888,  ///< BGRA 8:8:8:8 32bpp ( 4通道32bit BGRA 像素 )CV_PIX_FMT_BGR888,    ///< BGR  8:8:8   24bpp ( 3通道24bit BGR 像素 )/// 以下圖像格式只在fastcv開啟時支持CV_PIX_FMT_RGBA8888,  ///< RGBA  8:8:8:8   32bpp ( 4通道32bit RGBA 像素 )CV_PIX_FMT_RGB888,    ///< RGB  8:8:8   24bpp ( 3通道24bit RGB 像素 )CV_PIX_FMT_GRAY16,  ///< 特殊圖像格式,并不提供旋轉以及到其他格式的轉換等CV_PIX_FMT_RGB565,  ///< RGB 5:6:5 16bpp,只在fastcv開啟時支持從RGB565轉BGR和GRAY,目前僅支持android arm平臺CV_PIX_FMT_ABGR8888,  ///< ABGR 8:8:8:8 32bpp ( 4通道32bit ABGR 像素 ),目前僅支持android arm平臺CV_PIX_FMT_FLOAT2,    ///< 2通道CV_PIX_FMT_FLOAT,     ///< 1通道CV_PIX_FMT_YUYV,  /// 目前僅支持到GRAY8和BGR888的轉換CV_PIX_FMT_UYVY   /// 目前僅支持到GRAY8和BGR888的轉換
} cv_pixel_format;/// @brief 時間戳定義
typedef struct cv_time_t
{long int tv_sec;   ///< 秒long int tv_usec;  ///< 微秒
} cv_time_t;/// 圖像格式定義
typedef struct cv_image_t
{unsigned char *data;           ///< 圖像數據指針cv_pixel_format pixel_format;  ///< 像素格式int width;                     ///< 寬度(以像素為單位)int height;                    ///< 高度(以像素為單位)int stride;                    ///< 跨度, 即每行所占的字節數///< 目前僅支持內存連續的圖像, 各圖像格式具體大小應為:///< CV_PIX_FMT_GRAY8:      stride = width///< CV_PIX_FMT_YUV420P:    stride = width///< CV_PIX_FMT_NV12:       stride = width///< CV_PIX_FMT_NV21:       stride = width///< CV_PIX_FMT_BGRA8888:   stride = width * 4///< CV_PIX_FMT_BGR888:     stride = width * 3///< CV_PIX_FMT_RGBA8888:   stride = width * 4///< CV_PIX_FMT_RGB888:     stride = width * 3///< CV_PIX_FMT_GRAY16:     stride = width * 2///< CV_PIX_FMT_RGB565:     stride = width * 2///< CV_PIX_FMT_ABGR8888:   stride = width * 4///< CV_PIX_FMT_FLOAT2:     stride = width * 8///< CV_PIX_FMT_FLOAT:      stride = width * 4///< CV_PIX_FMT_YUYV:       stride = width * 2///< CV_PIX_FMT_UYVY:       stride = width * 2cv_time_t time_stamp;          ///< 時間戳
} cv_image_t;typedef int cv_errcode;#define CV_ERR_PACK(lib, module, reason)                                                                               \((int)(0x80000000 | ((unsigned int)(lib)&0x7ff) << 20 | ((unsigned int)(module)&0xf) << 16                         \| ((unsigned int)(reason)&0xffff)))#define CV_ERR_GETLIB(error_code) ((unsigned int)(error_code) >> 20 & 0x7ff)#define CV_ERR_GETMODULE(error_code) ((unsigned int)(error_code) >> 16 & 0xf)#define CV_ERR_GETREASON(error_code) ((unsigned int)(error_code)&0xffff)///====================global error definition==========================================
#define CV_E_GLOBAL_LIB 0x7ff
#define CV_E_GLOBAL_MODULE 0xf
#define CV_E_ONLINE_ACTIVATE_MODULE 0xe
#define CV_E_CONNECTION_MODULE 0xd#define CV_OK 0 ///< 正常運行
#define CV_E_INVALIDARG CV_ERR_PACK(CV_E_GLOBAL_LIB, CV_E_GLOBAL_MODULE, 0xffff) ///< 無效參數 -1
#define CV_E_HANDLE CV_ERR_PACK(CV_E_GLOBAL_LIB, CV_E_GLOBAL_MODULE, 0xfffe) ///< 句柄錯誤 -2
#define CV_E_OUTOFMEMORY CV_ERR_PACK(CV_E_GLOBAL_LIB, CV_E_GLOBAL_MODULE, 0xfffd) ///< 內存不足 -3
#define CV_E_FAIL CV_ERR_PACK(CV_E_GLOBAL_LIB, CV_E_GLOBAL_MODULE, 0xfffc) ///< 運行失敗,內部錯誤 -4
#define CV_E_DELNOTFOUND CV_ERR_PACK(CV_E_GLOBAL_LIB, CV_E_GLOBAL_MODULE, 0xfffb) ///< 定義缺失 -5
#define CV_E_INVALID_PIXEL_FORMAT CV_ERR_PACK(CV_E_GLOBAL_LIB, CV_E_GLOBAL_MODULE, 0xfffa) ///< 不支持的圖像格式 -6
#define CV_E_FILE_NOT_FOUND CV_ERR_PACK(CV_E_GLOBAL_LIB, CV_E_GLOBAL_MODULE, 0xfff9) ///< 文件不存在 -7
#define CV_E_INVALID_FILE_FORMAT                                                                                       \CV_ERR_PACK(CV_E_GLOBAL_LIB, CV_E_GLOBAL_MODULE, 0xfff8) ///< 模型格式不正確導致加載失敗 -8
#define CV_E_UNSUPPORTED CV_ERR_PACK(CV_E_GLOBAL_LIB, CV_E_GLOBAL_MODULE, 0xfc18) ///< 不支持的函數調用方式 -1000#define CV_E_FILE_EXPIRE CV_ERR_PACK(CV_E_GLOBAL_LIB, CV_E_GLOBAL_MODULE, 0xfff7) ///< 模型文件過期 -9
#define CV_E_READ_FILE_FAIL CV_ERR_PACK(CV_E_GLOBAL_LIB, CV_E_GLOBAL_MODULE, 0xfff6) ///< 讀取模型文件失敗 -10
#define CV_E_VERIFY_REG_FAIL                                                                                           \CV_ERR_PACK(CV_E_GLOBAL_LIB, CV_E_GLOBAL_MODULE, 0xfff5) ///< 在線verify注冊失敗 -11///< ///
#define CV_E_INVALID_AUTH CV_ERR_PACK(CV_E_GLOBAL_LIB, CV_E_GLOBAL_MODULE, 0xfff3) ///< license不合法 -13
#define CV_E_INVALID_APPID CV_ERR_PACK(CV_E_GLOBAL_LIB, CV_E_GLOBAL_MODULE, 0xfff2) ///< 包名錯誤 -14
#define CV_E_AUTH_EXPIRE CV_ERR_PACK(CV_E_GLOBAL_LIB, CV_E_GLOBAL_MODULE, 0xfff1) ///< SDK過期 -15
#define CV_E_UUID_MISMATCH CV_ERR_PACK(CV_E_GLOBAL_LIB, CV_E_GLOBAL_MODULE, 0xfff0) ///< UUID不匹配 -16
#define CV_E_ONLINE_AUTH_CONNECT_FAIL CV_ERR_PACK(CV_E_GLOBAL_LIB, CV_E_GLOBAL_MODULE, 0xffef) ///< 在線驗證連接失敗 -17
#define CV_E_ONLINE_AUTH_TIMEOUT CV_ERR_PACK(CV_E_GLOBAL_LIB, CV_E_GLOBAL_MODULE, 0xffee) ///< 在線驗證超時 -18
#define CV_E_ONLINE_AUTH_INVALID CV_ERR_PACK(CV_E_GLOBAL_LIB, CV_E_GLOBAL_MODULE, 0xffed) ///< 在線驗證失敗 -19
#define CV_E_LICENSE_IS_NOT_ACTIVABLE                                                                                  \CV_ERR_PACK(CV_E_GLOBAL_LIB, CV_E_GLOBAL_MODULE, 0xffec) ///< license不可離線激活 -20
#define CV_E_ACTIVE_FAIL CV_ERR_PACK(CV_E_GLOBAL_LIB, CV_E_GLOBAL_MODULE, 0xffeb) ///< license離線激活失敗 -21
#define CV_E_ACTIVE_CODE_INVALID CV_ERR_PACK(CV_E_GLOBAL_LIB, CV_E_GLOBAL_MODULE, 0xffea) ///< 離線激活碼無效 -22
#define CV_E_PRODUCT_VERSION_MISMATCH                                                                                  \CV_ERR_PACK(CV_E_GLOBAL_LIB, CV_E_GLOBAL_MODULE, 0xffe9) ///< 產品代碼版本不一致 -23
#define CV_E_PLATFORM_NOTSUPPORTED CV_ERR_PACK(CV_E_GLOBAL_LIB, CV_E_GLOBAL_MODULE, 0xffe8) ///< 不支持的平臺 -24
#define CV_E_UNZIP_FAILED CV_ERR_PACK(CV_E_GLOBAL_LIB, CV_E_GLOBAL_MODULE, 0xffe7) ///< 模型解壓縮失敗 -25
#define CV_E_SUBMODULE_NON_EXIT CV_ERR_PACK(CV_E_GLOBAL_LIB, CV_E_GLOBAL_MODULE, 0xffe6) ///< 子模型不存在 -26
#define CV_E_ONLINE_ACTIVATE_NO_NEED                                                                                   \CV_ERR_PACK(CV_E_GLOBAL_LIB, CV_E_GLOBAL_MODULE, 0xffe5) ///< license不可在線激活 -27
#define CV_E_ONLINE_ACTIVATE_FAIL CV_ERR_PACK(CV_E_GLOBAL_LIB, CV_E_GLOBAL_MODULE, 0xffe4) ///< 在線激活失敗 -28
#define CV_E_ONLINE_ACTIVATE_CODE_INVALID                                                                              \CV_ERR_PACK(CV_E_GLOBAL_LIB, CV_E_GLOBAL_MODULE, 0xffe3) ///< 在線激活碼無效 -29
#define CV_E_ONLINE_ACTIVATE_CONNECT_FAIL                                                                              \CV_ERR_PACK(CV_E_GLOBAL_LIB, CV_E_GLOBAL_MODULE, 0xffe2) ///< 在線激活連接失敗 -30
#define CV_RET_UNRECOGNIZED                                                                                            \CV_ERR_PACK(CV_E_GLOBAL_LIB, CV_E_GLOBAL_MODULE, 0xffe1) ///< 圖片不能識別(但是API調用正常) -31
#define CV_E_HW_AUTH_INIT_FAIL CV_ERR_PACK(CV_E_GLOBAL_LIB, CV_E_GLOBAL_MODULE, 0xffe0) ///< 加密芯片驗證初始化錯誤 -32
#define CV_E_HW_AUTH_FAIL CV_ERR_PACK(CV_E_GLOBAL_LIB, CV_E_GLOBAL_MODULE, 0xffdf) ///< 加密芯片驗證失敗 -33
#define CV_E_VERIFY_FAIL CV_ERR_PACK(CV_E_GLOBAL_LIB, CV_E_GLOBAL_MODULE, 0xffde) ///< 在線認證v2失敗 -34
#define CV_E_VERIFY_EXPIRE CV_ERR_PACK(CV_E_GLOBAL_LIB, CV_E_GLOBAL_MODULE, 0xffdd) ///< 在線認證v2過期 -35
#define CV_E_NO_LICENSE CV_ERR_PACK(CV_E_GLOBAL_LIB, CV_E_GLOBAL_MODULE, 0xffdc) ///< 沒有可用的證書 -36
#define CV_E_HW_REG_FAIL CV_ERR_PACK(CV_E_GLOBAL_LIB, CV_E_GLOBAL_MODULE, 0xffdb) ///< 加密芯片驗證注冊失敗 -37
#define CV_E_PRODUCT_VERSION_FAILED                                                                                    \CV_ERR_PACK(CV_E_GLOBAL_LIB, CV_E_GLOBAL_MODULE, 0xffda) ///< 獲取product_version的函數調用失敗 -38
#define CV_E_SIGN_ACTIVATION_CODE_FAILED CV_ERR_PACK(CV_E_GLOBAL_LIB, CV_E_GLOBAL_MODULE, 0xffd9)   ///< 生成激活碼失敗 -39
#define CV_E_SIGN_ACTIVATION_CODE_TOKEN_EXPIRE CV_ERR_PACK(CV_E_GLOBAL_LIB, CV_E_GLOBAL_MODULE, 0xffd8)		///< 激活碼token過期 -40
#define CV_E_SIGN_ACTIVATION_CODE_EXPIRE CV_ERR_PACK(CV_E_GLOBAL_LIB, CV_E_GLOBAL_MODULE, 0xffd7)		///< 激活碼/** Connection error module code*/
/** \brief SSL status: normal connection fail. */
#define CV_E_CONNECTION_FAIL CV_ERR_PACK(CV_E_GLOBAL_LIB, CV_E_CONNECTION_MODULE, 0xffff)///=======================protector errors===========================================
#define CV_E_PROTECTOR_LIB 0x1
#define CV_E_LICENSE_LIB 0x7F // 127
#define CV_E_PROTECTOR_MODULE_ONLINEAUTH_MODULE 0x1 ///< protector 在線驗證返回錯誤碼mask
#define CV_E_LICENSE_SENTINEL_MODULE 0x0/***CV_E_ONLINE_ACTIVATE_MODULE 錯誤碼-2145517567 在請求body中沒有system_info或者system_info格式不對-2145517566 jwt token格式不對-2145517565 body里system_info中沒有udid或為空-2145517564 jwt簽名算法不是HS256-2145517563 jwt簽名校驗失敗-2145517562 jwt token中udid與body里system_info中的udid不一致-2145517561 jwt token中kid為空或者與body中license不一致-2145517560 認證失敗-2145517559 內部錯誤-2145517558 license未找到-2145517557 license激活次數已用完-2145517556 認證失敗-2145517555 license _act字段不是online_activation-2145517554 license已失效-2145517553 找不到父證書-2145517552 license父證書過多,最多為10層if (CV_ERR_GETLIB(code) == CV_E_PROTECTOR_LIB)if (CV_ERR_GETMODULE(code) == CV_E_ONLINE_ACTIVATE_MODULE)CV_ERR_GETREASON(code)對應獲取getreason結果1 在請求body中沒有system_info或者system_info格式不對2 jwt token格式不對3 body里system_info中沒有udid或為空4 jwt簽名算法不是HS2565 jwt簽名校驗失敗6 jwt token中udid與body里system_info中的udid不一致7 jwt token中kid為空或者與body中license不一致8 認證失敗9 內部錯誤10 license未找到11 license激活次數已用完12 認證失敗13 license _act字段不是online_activation14 license已失效15 找不到父證書16 license父證書過多,最多為10層
***/#define CV_E_PROTECTOR_UDID                                                                                            \CV_ERR_PACK(CV_E_PROTECTOR_LIB, CV_E_PROTECTOR_MODULE_ONLINEAUTH_MODULE, 0xffff) ///< 獲取udid失敗
#define CV_E_PROTECTOR_FORMAT_HEADER                                                                                   \CV_ERR_PACK(CV_E_PROTECTOR_LIB, CV_E_PROTECTOR_MODULE_ONLINEAUTH_MODULE, 0xfffe) ///< 生成請求消息失敗
#define CV_E_PROTECTOR_INVALID_URL                                                                                     \CV_ERR_PACK(CV_E_PROTECTOR_LIB, CV_E_PROTECTOR_MODULE_ONLINEAUTH_MODULE, 0xfffd) ///< url錯誤#define CV_E_HEARTBEAT_CONNECT_FAIL CV_ERR_PACK(CV_E_PROTECTOR_LIB, CV_E_GLOBAL_MODULE, 0xffff) ///< 連接心跳服務器失敗
#define CV_E_HEARTBEAT_INVALID_RESPONSE                                                                                \CV_ERR_PACK(CV_E_PROTECTOR_LIB, CV_E_GLOBAL_MODULE, 0xfffe) ///< 心跳服務器響應消息格式錯誤/*
加密狗相關錯誤碼說明:
錯誤碼LIB(用CV_ERR_GETLIB獲取):CV_E_LICENSE_LIB
錯誤碼MODULE(用CV_ERR_GETMODULE獲取):CV_E_LICENSE_SENTINEL_MODULE
錯誤碼REASON(用CV_ERR_GETREASON獲取):0x8xxx的錯誤碼定義在本文件中,為加密狗模塊通用錯誤碼;0x4xxx的錯誤碼為激活服務器端響應返回的錯誤碼;其他錯誤碼為加密狗硬件相關錯誤碼
*/
#define CV_E_SENTINEL_PARSE_XML CV_ERR_PACK(CV_E_LICENSE_LIB, CV_E_LICENSE_SENTINEL_MODULE, 0x8000) ///< 解析xml失敗
#define CV_E_SENTINEL_CONNECT_FAIL                                                                                     \CV_ERR_PACK(CV_E_LICENSE_LIB, CV_E_LICENSE_SENTINEL_MODULE, 0x8001) ///< 鏈接激活服務器失敗
#define CV_E_SENTINEL_V2C_MISSING                                                                                      \CV_ERR_PACK(CV_E_LICENSE_LIB, CV_E_LICENSE_SENTINEL_MODULE, 0x8002) ///< 服務器響應中沒有v2c文件
#define CV_E_SENTINEL_INVALID_RESPONSE                                                                                 \CV_ERR_PACK(CV_E_LICENSE_LIB, CV_E_LICENSE_SENTINEL_MODULE, 0x8003) ///< 服務器響應格式錯誤
#define CV_E_SENTINEL_FINGERPRINT_MISMATCH                                                                             \CV_ERR_PACK(CV_E_LICENSE_LIB, CV_E_LICENSE_SENTINEL_MODULE, 0x8004) ///< 機器指紋不匹配/*
URLTYPE_HTTP_SP類型錯誤碼:
錯誤碼LIB(用CV_ERR_GETLIB獲取):CV_E_GLOBAL_LIB
錯誤碼MODULE(用CV_ERR_GETMODULE獲取):CV_E_ONLINE_ACTIVATE_MODULE
錯誤碼REASON(用CV_ERR_GETREASON獲取):0x8xxx的錯誤碼定義在本文件中*/
#define CV_E_HTTP_SP_ENCRYPT_REQUEST_FAILED                                                                            \CV_ERR_PACK(CV_E_GLOBAL_LIB, CV_E_ONLINE_ACTIVATE_MODULE, 0x8001); ///<加密請求失敗
#define CV_E_HTTP_SP_DECRYPT_RESPONSE_FAILED                                                                           \CV_ERR_PACK(CV_E_GLOBAL_LIB, CV_E_ONLINE_ACTIVATE_MODULE, 0x8002); ///<解密響應失敗

【關注我,后續持續新增專題博文,謝謝!!!】

下一篇講解

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/913416.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/913416.shtml
英文地址,請注明出處:http://en.pswp.cn/news/913416.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【字節跳動】數據挖掘面試題0012:數據分析、數據挖掘、數據建模的區別

文章大綱 數據分析、數據挖掘、數據建模的區別一、核心定義與目標二、技術方法差異三、應用場景對比四、三者的關聯與遞進關系五、面試應答策略 數據分析、數據挖掘、數據建模的區別 一、核心定義與目標 數據分析&#xff1a; 是對已有的數據進行收集、清洗、整理&#xff0c;并…

預警:病毒 “黑吃黑”,GitHub 開源遠控項目暗藏后門

在開源生態蓬勃發展的當下&#xff0c;黑客們也將黑手伸向了代碼共享平臺。當黑產開發者以為在共享 “行業秘笈” 時&#xff0c;殊不知已經掉入了黑客布置的陷阱 —— 看似方便的后門遠程控制源碼和游戲作弊外掛源碼等 “圈內資源”&#xff0c;實則是植入了惡意代碼的投毒誘餌…

Qt中的QProcess類

Qt中的QProcess類 QProcess 是 Qt 框架中用于啟動和控制外部進程的類&#xff0c;它屬于 QtCore 模塊。這個類提供了執行外部程序并與它們交互的功能。 一、主要功能 啟動外部程序&#xff1a;可以啟動系統上的其他可執行程序進程通信&#xff1a;通過標準輸入、輸出和錯誤流…

周任務自動化升級:N8N與多維表格無縫聯動全解析

.自動化之言&#xff1a; 在上一篇文章中&#xff0c;我們介紹了如何利用多維表格&#xff08;如飛書多維表格或Notion&#xff09;搭建一個靈活的任務管理系統。現在我們將進一步擴展這個系統&#xff0c;借助 N8N 實現周報的自動匯總與郵件發送&#xff0c;真正實現任務管理…

Go語言的web框架--gin

本章內容&#xff0c;會介紹一下gin的運用&#xff0c;以及gin框架底層的內容&#xff0c;話不多說&#xff0c;開始進入今天的主題吧&#xff01; 一.基本使用 gin框架支持前后端不分離的形式&#xff0c;也就是直接使用模板的形式。 模板是什么&#xff1f; 這里可能有同…

企業為什么需要雙因素認證?

從進入互聯網時代開始&#xff0c;密碼是我們個人日常的重要保護。但是單獨的密碼保護可能已經不再適應當前的數字化時代。密碼已經不再足夠安全最近發生的各種安全漏洞讓我重新審視網絡安全。幾行代碼可能就導致了全球數以百萬的登錄憑證被泄露。今天&#xff0c;僅僅周期性地…

Spring Boot + 本地部署大模型實現:優化與性能提升!

在Spring Boot中集成本地部署的大模型&#xff08;如LLaMA、ChatGLM等&#xff09;并進行優化&#xff0c;需要從模型選擇、推理加速、資源管理和架構設計等多方面入手。以下是完整的優化方案及實現步驟&#xff1a; 一、核心優化策略 1. 模型量化 目標&#xff1a;減少顯存占…

仿mudou庫one thread oneloop式并發服務器

前言 我們所要實現的是一個高并發服務器的組件&#xff0c;使服務器的性能更加高效&#xff0c;是一個高并發服務器的組件&#xff0c;并不包含實際的業務。 首先需要先明確我們所要實現的目標是什么 第一點&#xff0c;實現一個高并發的服務器第二點&#xff0c;在服務器的基礎…

超詳細的私有化安裝部署Dify服務以及安裝過程中問題處理

一、什么是Dify Dify 是一款開源的大語言模型(LLM) 應用開發平臺。它融合了后端即服務&#xff08;Backend as Service&#xff09;和 LLMOps 的理念&#xff0c;使開發者可以快速搭建生產級的生成式 AI 應用。即使你是非技術人員&#xff0c;也能參與到 AI 應用的定義和數據…

國產DSP,QXS320F280049,QXS320F28377D,QXS320F2800137,QXS320F28034

自定義指令集&#xff0c;自研內核架構&#xff0c;基于eclipse自研IDE&#xff0c;工具鏈&#xff0c;算法庫。 根據自研QXS320F280049&#xff0c;做了600W和2KW數字電源方案&#xff0c;1.5KW電機方案&#xff0c;目前已在市場大量投產。 QXS320F290049應用于數字電源&#…

dotnet publish 發布后的項目,例如asp.net core mvc項目如何在ubuntu中運行,并可外部訪問

復制到 Ubuntu 上的是使用 Visual Studio 或 dotnet publish 命令生成的 發布后的輸出文件&#xff08;publish output&#xff09;&#xff0c;而不是原始項目源代碼。在這種情況下&#xff0c;確實沒有 .csproj 文件&#xff0c;所以不能直接用 dotnet run 啟動。但你可以通過…

Linux多線程(十二)之【生產者消費者模型】

文章目錄生產者消費者模型為何要使用生產者消費者模型生產者消費者模型優點基于BlockingQueue的生產者消費者模型BlockingQueueC queue模擬阻塞隊列的生產消費模型單線程生產消費模型多線程生產消費模型生產者消費者模型 consumer/productor 321原則(便于記憶) 為何要使用生產…

MySQL表的操作(3)

文章目錄前言一、創建表創建表時指定屬性二、查看表查看表結構查看建表消息三、修改表修改列屬性修改列名修改表名四、刪除表總結前言 Hello! 那我們乘勝追擊&#xff0c;開始 表的操作&#xff01; 一、創建表 首先創建一個 數據庫 testForTable mysql> create database i…

從“人工智障”到“智能助手”:集成為什么能拯救AI用戶體驗?

幾年前&#xff0c;當人們滿懷期待地與AI語音助手對話時&#xff0c;常常遭遇令人啼笑皆非的回應——“抱歉&#xff0c;我不明白你在說什么”“請再說一遍”甚至答非所問。AI被戲稱為“人工智障”&#xff0c;用戶體驗一度讓人失望。然而&#xff0c;近年來&#xff0c;隨著技…

Uniapp 自定義TabBar + 動態菜單實現教程(Vuex狀態管理詳解)

大家好&#xff0c;我是一諾。今天跟大家分享一下uniapp 封裝自定義底部導航欄&#xff08;TabBar&#xff09; 過程中的思考和實踐。通過本文&#xff0c;你將學會如何打造一個功能完善、可自由定制的TabBar組件&#xff01; 先看效果&#xff1a; 支持自定義圖標和樣式動態顯…

MySQL數據庫主從復制

概述1、master開啟二進制日志記錄2、slave開啟IO進程&#xff0c;從master中讀取二進制日志并寫入slave的中繼日志3、slave開啟SQL進程&#xff0c;從中繼日志中讀取二進制日志并進行重放4、最終&#xff0c;達到slave與master中數據一致的狀態&#xff0c;我們稱作為主從復制的…

Rancher Server + Kubernets搭建云原生集群平臺

目錄Rancher Server Kubernets搭建云原生集群平臺一、環境準備1、軟件準備2、環境規劃3、掛載數據盤二、虛擬機初始化基礎配置&#xff08;所有節點都需要操作&#xff09;1、執行時間服務器腳本&#xff08;包括配置hostName主機名&#xff09;2、配置hosts文件3、配置各節點…

Java學習第八部分——泛型

目錄 一、概述 &#xff08;一&#xff09;定義 &#xff08;二&#xff09;作用 &#xff08;三&#xff09;引入原因 二、使用 &#xff08;一&#xff09;類 &#xff08;二&#xff09;接口 &#xff08;三&#xff09;方法 三、類型參數 &#xff08;一&#xf…

定時點擊二次鼠標 定時點擊鼠標

定時點擊二次鼠標 定時點擊鼠標 今天分享一個定時點擊兩次的小工具。 我們在生活中&#xff0c;可能會遇到一些定時點擊的任務。比如說在晚上9點去發送一個群發&#xff0c;或者倒計時點擊一個按鈕。那么可以使用這個工具&#xff0c;僅適用于Windows電腦。 #定時點擊鼠標 #倒計…

Linux網絡配置與故障排除完全指南

1. ifconfig命令 - 網絡接口配置器 ifconfig&#xff08;interface configurator&#xff09;是Linux系統中最基礎的網絡配置工具。該命令可以初始化網絡接口、分配IP地址、啟用或禁用接口&#xff0c;同時還能查看接口的詳細信息。 查看網絡接口信息 # ifconfig eth0 …