Commit 8fda1630 authored by 郝文豪's avatar 郝文豪

aarch64库文件

parent a23beec1
Pipeline #286 failed with stages
This source diff could not be displayed because it is too large. You can view the blob instead.
#ifndef CURLINC_CURLVER_H
#define CURLINC_CURLVER_H
/***************************************************************************
* _ _ ____ _
* Project ___| | | | _ \| |
* / __| | | | |_) | |
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
* Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
* are also available at https://curl.se/docs/copyright.html.
*
* You may opt to use, copy, modify, merge, publish, distribute and/or sell
* copies of the Software, and permit persons to whom the Software is
* furnished to do so, under the terms of the COPYING file.
*
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
***************************************************************************/
/* This header file contains nothing but libcurl version info, generated by
a script at release-time. This was made its own header file in 7.11.2 */
/* This is the global package copyright */
#define LIBCURL_COPYRIGHT "1996 - 2021 Daniel Stenberg, <daniel@haxx.se>."
/* This is the version number of the libcurl package from which this header
file origins: */
#define LIBCURL_VERSION "7.81.0"
/* The numeric version number is also available "in parts" by using these
defines: */
#define LIBCURL_VERSION_MAJOR 7
#define LIBCURL_VERSION_MINOR 81
#define LIBCURL_VERSION_PATCH 0
/* This is the numeric version of the libcurl version number, meant for easier
parsing and comparisons by programs. The LIBCURL_VERSION_NUM define will
always follow this syntax:
0xXXYYZZ
Where XX, YY and ZZ are the main version, release and patch numbers in
hexadecimal (using 8 bits each). All three numbers are always represented
using two digits. 1.2 would appear as "0x010200" while version 9.11.7
appears as "0x090b07".
This 6-digit (24 bits) hexadecimal number does not show pre-release number,
and it is always a greater number in a more recent release. It makes
comparisons with greater than and less than work.
Note: This define is the full hex number and _does not_ use the
CURL_VERSION_BITS() macro since curl's own configure script greps for it
and needs it to contain the full number.
*/
#define LIBCURL_VERSION_NUM 0x075100
/*
* This is the date and time when the full source package was created. The
* timestamp is not stored in git, as the timestamp is properly set in the
* tarballs by the maketgz script.
*
* The format of the date follows this template:
*
* "2007-11-23"
*/
#define LIBCURL_TIMESTAMP "2022-01-05"
#define CURL_VERSION_BITS(x,y,z) ((x)<<16|(y)<<8|(z))
#define CURL_AT_LEAST_VERSION(x,y,z) \
(LIBCURL_VERSION_NUM >= CURL_VERSION_BITS(x, y, z))
#endif /* CURLINC_CURLVER_H */
#ifndef CURLINC_EASY_H
#define CURLINC_EASY_H
/***************************************************************************
* _ _ ____ _
* Project ___| | | | _ \| |
* / __| | | | |_) | |
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
* Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
* are also available at https://curl.se/docs/copyright.html.
*
* You may opt to use, copy, modify, merge, publish, distribute and/or sell
* copies of the Software, and permit persons to whom the Software is
* furnished to do so, under the terms of the COPYING file.
*
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
***************************************************************************/
#ifdef __cplusplus
extern "C" {
#endif
/* Flag bits in the curl_blob struct: */
#define CURL_BLOB_COPY 1 /* tell libcurl to copy the data */
#define CURL_BLOB_NOCOPY 0 /* tell libcurl to NOT copy the data */
struct curl_blob {
void *data;
size_t len;
unsigned int flags; /* bit 0 is defined, the rest are reserved and should be
left zeroes */
};
CURL_EXTERN CURL *curl_easy_init(void);
CURL_EXTERN CURLcode curl_easy_setopt(CURL *curl, CURLoption option, ...);
CURL_EXTERN CURLcode curl_easy_perform(CURL *curl);
CURL_EXTERN void curl_easy_cleanup(CURL *curl);
/*
* NAME curl_easy_getinfo()
*
* DESCRIPTION
*
* Request internal information from the curl session with this function. The
* third argument MUST be a pointer to a long, a pointer to a char * or a
* pointer to a double (as the documentation describes elsewhere). The data
* pointed to will be filled in accordingly and can be relied upon only if the
* function returns CURLE_OK. This function is intended to get used *AFTER* a
* performed transfer, all results from this function are undefined until the
* transfer is completed.
*/
CURL_EXTERN CURLcode curl_easy_getinfo(CURL *curl, CURLINFO info, ...);
/*
* NAME curl_easy_duphandle()
*
* DESCRIPTION
*
* Creates a new curl session handle with the same options set for the handle
* passed in. Duplicating a handle could only be a matter of cloning data and
* options, internal state info and things like persistent connections cannot
* be transferred. It is useful in multithreaded applications when you can run
* curl_easy_duphandle() for each new thread to avoid a series of identical
* curl_easy_setopt() invokes in every thread.
*/
CURL_EXTERN CURL *curl_easy_duphandle(CURL *curl);
/*
* NAME curl_easy_reset()
*
* DESCRIPTION
*
* Re-initializes a CURL handle to the default values. This puts back the
* handle to the same state as it was in when it was just created.
*
* It does keep: live connections, the Session ID cache, the DNS cache and the
* cookies.
*/
CURL_EXTERN void curl_easy_reset(CURL *curl);
/*
* NAME curl_easy_recv()
*
* DESCRIPTION
*
* Receives data from the connected socket. Use after successful
* curl_easy_perform() with CURLOPT_CONNECT_ONLY option.
*/
CURL_EXTERN CURLcode curl_easy_recv(CURL *curl, void *buffer, size_t buflen,
size_t *n);
/*
* NAME curl_easy_send()
*
* DESCRIPTION
*
* Sends data over the connected socket. Use after successful
* curl_easy_perform() with CURLOPT_CONNECT_ONLY option.
*/
CURL_EXTERN CURLcode curl_easy_send(CURL *curl, const void *buffer,
size_t buflen, size_t *n);
/*
* NAME curl_easy_upkeep()
*
* DESCRIPTION
*
* Performs connection upkeep for the given session handle.
*/
CURL_EXTERN CURLcode curl_easy_upkeep(CURL *curl);
#ifdef __cplusplus
}
#endif
#endif
#ifndef CURLINC_MPRINTF_H
#define CURLINC_MPRINTF_H
/***************************************************************************
* _ _ ____ _
* Project ___| | | | _ \| |
* / __| | | | |_) | |
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
* Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
* are also available at https://curl.se/docs/copyright.html.
*
* You may opt to use, copy, modify, merge, publish, distribute and/or sell
* copies of the Software, and permit persons to whom the Software is
* furnished to do so, under the terms of the COPYING file.
*
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
***************************************************************************/
#include <stdarg.h>
#include <stdio.h> /* needed for FILE */
#include "curl.h" /* for CURL_EXTERN */
#ifdef __cplusplus
extern "C" {
#endif
CURL_EXTERN int curl_mprintf(const char *format, ...);
CURL_EXTERN int curl_mfprintf(FILE *fd, const char *format, ...);
CURL_EXTERN int curl_msprintf(char *buffer, const char *format, ...);
CURL_EXTERN int curl_msnprintf(char *buffer, size_t maxlength,
const char *format, ...);
CURL_EXTERN int curl_mvprintf(const char *format, va_list args);
CURL_EXTERN int curl_mvfprintf(FILE *fd, const char *format, va_list args);
CURL_EXTERN int curl_mvsprintf(char *buffer, const char *format, va_list args);
CURL_EXTERN int curl_mvsnprintf(char *buffer, size_t maxlength,
const char *format, va_list args);
CURL_EXTERN char *curl_maprintf(const char *format, ...);
CURL_EXTERN char *curl_mvaprintf(const char *format, va_list args);
#ifdef __cplusplus
}
#endif
#endif /* CURLINC_MPRINTF_H */
This diff is collapsed.
#ifndef CURLINC_OPTIONS_H
#define CURLINC_OPTIONS_H
/***************************************************************************
* _ _ ____ _
* Project ___| | | | _ \| |
* / __| | | | |_) | |
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
* Copyright (C) 2018 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
* are also available at https://curl.se/docs/copyright.html.
*
* You may opt to use, copy, modify, merge, publish, distribute and/or sell
* copies of the Software, and permit persons to whom the Software is
* furnished to do so, under the terms of the COPYING file.
*
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
***************************************************************************/
#ifdef __cplusplus
extern "C" {
#endif
typedef enum {
CURLOT_LONG, /* long (a range of values) */
CURLOT_VALUES, /* (a defined set or bitmask) */
CURLOT_OFF_T, /* curl_off_t (a range of values) */
CURLOT_OBJECT, /* pointer (void *) */
CURLOT_STRING, /* (char * to zero terminated buffer) */
CURLOT_SLIST, /* (struct curl_slist *) */
CURLOT_CBPTR, /* (void * passed as-is to a callback) */
CURLOT_BLOB, /* blob (struct curl_blob *) */
CURLOT_FUNCTION /* function pointer */
} curl_easytype;
/* Flag bits */
/* "alias" means it is provided for old programs to remain functional,
we prefer another name */
#define CURLOT_FLAG_ALIAS (1<<0)
/* The CURLOPTTYPE_* id ranges can still be used to figure out what type/size
to use for curl_easy_setopt() for the given id */
struct curl_easyoption {
const char *name;
CURLoption id;
curl_easytype type;
unsigned int flags;
};
CURL_EXTERN const struct curl_easyoption *
curl_easy_option_by_name(const char *name);
CURL_EXTERN const struct curl_easyoption *
curl_easy_option_by_id (CURLoption id);
CURL_EXTERN const struct curl_easyoption *
curl_easy_option_next(const struct curl_easyoption *prev);
#ifdef __cplusplus
} /* end of extern "C" */
#endif
#endif /* CURLINC_OPTIONS_H */
#ifndef CURLINC_STDCHEADERS_H
#define CURLINC_STDCHEADERS_H
/***************************************************************************
* _ _ ____ _
* Project ___| | | | _ \| |
* / __| | | | |_) | |
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
* Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
* are also available at https://curl.se/docs/copyright.html.
*
* You may opt to use, copy, modify, merge, publish, distribute and/or sell
* copies of the Software, and permit persons to whom the Software is
* furnished to do so, under the terms of the COPYING file.
*
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
***************************************************************************/
#include <sys/types.h>
size_t fread(void *, size_t, size_t, FILE *);
size_t fwrite(const void *, size_t, size_t, FILE *);
int strcasecmp(const char *, const char *);
int strncasecmp(const char *, const char *, size_t);
#endif /* CURLINC_STDCHEADERS_H */
This diff is collapsed.
This diff is collapsed.
#ifndef CURLINC_URLAPI_H
#define CURLINC_URLAPI_H
/***************************************************************************
* _ _ ____ _
* Project ___| | | | _ \| |
* / __| | | | |_) | |
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
* Copyright (C) 2018 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
* are also available at https://curl.se/docs/copyright.html.
*
* You may opt to use, copy, modify, merge, publish, distribute and/or sell
* copies of the Software, and permit persons to whom the Software is
* furnished to do so, under the terms of the COPYING file.
*
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
***************************************************************************/
#include "curl.h"
#ifdef __cplusplus
extern "C" {
#endif
/* the error codes for the URL API */
typedef enum {
CURLUE_OK,
CURLUE_BAD_HANDLE, /* 1 */
CURLUE_BAD_PARTPOINTER, /* 2 */
CURLUE_MALFORMED_INPUT, /* 3 */
CURLUE_BAD_PORT_NUMBER, /* 4 */
CURLUE_UNSUPPORTED_SCHEME, /* 5 */
CURLUE_URLDECODE, /* 6 */
CURLUE_OUT_OF_MEMORY, /* 7 */
CURLUE_USER_NOT_ALLOWED, /* 8 */
CURLUE_UNKNOWN_PART, /* 9 */
CURLUE_NO_SCHEME, /* 10 */
CURLUE_NO_USER, /* 11 */
CURLUE_NO_PASSWORD, /* 12 */
CURLUE_NO_OPTIONS, /* 13 */
CURLUE_NO_HOST, /* 14 */
CURLUE_NO_PORT, /* 15 */
CURLUE_NO_QUERY, /* 16 */
CURLUE_NO_FRAGMENT, /* 17 */
CURLUE_NO_ZONEID, /* 18 */
CURLUE_BAD_FILE_URL, /* 19 */
CURLUE_BAD_FRAGMENT, /* 20 */
CURLUE_BAD_HOSTNAME, /* 21 */
CURLUE_BAD_IPV6, /* 22 */
CURLUE_BAD_LOGIN, /* 23 */
CURLUE_BAD_PASSWORD, /* 24 */
CURLUE_BAD_PATH, /* 25 */
CURLUE_BAD_QUERY, /* 26 */
CURLUE_BAD_SCHEME, /* 27 */
CURLUE_BAD_SLASHES, /* 28 */
CURLUE_BAD_USER, /* 29 */
CURLUE_LAST
} CURLUcode;
typedef enum {
CURLUPART_URL,
CURLUPART_SCHEME,
CURLUPART_USER,
CURLUPART_PASSWORD,
CURLUPART_OPTIONS,
CURLUPART_HOST,
CURLUPART_PORT,
CURLUPART_PATH,
CURLUPART_QUERY,
CURLUPART_FRAGMENT,
CURLUPART_ZONEID /* added in 7.65.0 */
} CURLUPart;
#define CURLU_DEFAULT_PORT (1<<0) /* return default port number */
#define CURLU_NO_DEFAULT_PORT (1<<1) /* act as if no port number was set,
if the port number matches the
default for the scheme */
#define CURLU_DEFAULT_SCHEME (1<<2) /* return default scheme if
missing */
#define CURLU_NON_SUPPORT_SCHEME (1<<3) /* allow non-supported scheme */
#define CURLU_PATH_AS_IS (1<<4) /* leave dot sequences */
#define CURLU_DISALLOW_USER (1<<5) /* no user+password allowed */
#define CURLU_URLDECODE (1<<6) /* URL decode on get */
#define CURLU_URLENCODE (1<<7) /* URL encode on set */
#define CURLU_APPENDQUERY (1<<8) /* append a form style part */
#define CURLU_GUESS_SCHEME (1<<9) /* legacy curl-style guessing */
#define CURLU_NO_AUTHORITY (1<<10) /* Allow empty authority when the
scheme is unknown. */
#define CURLU_ALLOW_SPACE (1<<11) /* Allow spaces in the URL */
typedef struct Curl_URL CURLU;
/*
* curl_url() creates a new CURLU handle and returns a pointer to it.
* Must be freed with curl_url_cleanup().
*/
CURL_EXTERN CURLU *curl_url(void);
/*
* curl_url_cleanup() frees the CURLU handle and related resources used for
* the URL parsing. It will not free strings previously returned with the URL
* API.
*/
CURL_EXTERN void curl_url_cleanup(CURLU *handle);
/*
* curl_url_dup() duplicates a CURLU handle and returns a new copy. The new
* handle must also be freed with curl_url_cleanup().
*/
CURL_EXTERN CURLU *curl_url_dup(CURLU *in);
/*
* curl_url_get() extracts a specific part of the URL from a CURLU
* handle. Returns error code. The returned pointer MUST be freed with
* curl_free() afterwards.
*/
CURL_EXTERN CURLUcode curl_url_get(CURLU *handle, CURLUPart what,
char **part, unsigned int flags);
/*
* curl_url_set() sets a specific part of the URL in a CURLU handle. Returns
* error code. The passed in string will be copied. Passing a NULL instead of
* a part string, clears that part.
*/
CURL_EXTERN CURLUcode curl_url_set(CURLU *handle, CURLUPart what,
const char *part, unsigned int flags);
/*
* curl_url_strerror() turns a CURLUcode value into the equivalent human
* readable error string. This is useful for printing meaningful error
* messages.
*/
CURL_EXTERN const char *curl_url_strerror(CURLUcode);
#ifdef __cplusplus
} /* end of extern "C" */
#endif
#endif /* CURLINC_URLAPI_H */
#pragma once
#include <string>
#include <vector>
#include "opencv2/opencv.hpp"
namespace libhnsw {
enum MODE
{
BRUTE_FORCE_KNN = 0,
BRUTE_FORCE_KNN_CF = 1,
HNSW_FORCE_KNN = 2,
HNSW_FORCE_KNN_CF = 3,
MNN_MATMUL_CF = 4,
OPENCV_MATMUL_CF = 5
};
enum SPACE_TYPE
{
INNER_PRODUCT=0,
L1_DISTANCE=1,
L2_DISTANCE=2,
};
struct RequireSample //查询向量结构体
{
float* data=NULL;
int d; // 向量维度,如果是0表示未查询到
};
class Index
{
public:
// 构造函数1:初始化
Index(int d, int n, MODE md,SPACE_TYPE st=L2_DISTANCE,
size_t M = 16, size_t ef_construction = 200, size_t random_seed = 100);
~Index();
// 构造函数2:初始化load index(废弃20211224)
//Index(const std::string index_path,int d, int n, MODE md,SPACE_TYPE st=L2_DISTANCE);
// 加载Index:成功:1;失败:0(新增20211224)
int loadIndex(const std::string& location);
// 增加一个样本
int Addsample(float *sample, int label);
// 删除一个样本
int Removesample(int label);
// 检索一个样本
std::vector<std::pair<float, int>> Search(float* sample, int k);
// 查询一个样本(仅支持BRUTE模式)
int Selectsample(RequireSample& sample, int label);
// 释放一个查询样本
int freeSelectsample(RequireSample* sample);
// 保存index
void saveIndex(const std::string &location);
// 获取index的最大容量
int get_max_elements();
// 获取index的当前容量
int get_cur_element_count();
// 该值等于fea_dim_*sizeof(float)
int get_data_size();
private:
int fea_dim_; // 特征维度
int num_; // 最大容量
MODE md_; // 算法类型
SPACE_TYPE st_; // 计算方式
};
}
\ No newline at end of file
#pragma once
#ifndef _CLASSIFY_LIB_H_
#define _CLASSIFY_LIB_H_
#include <vector>
#include "opencv2/opencv.hpp"
#define CLASSIFY_CLS_TOP_N 10
#define CLASSIFY_FEAT_DIM 160
#define CLASSIFY_INPUT_WIDTH 224
#define CLASSIFY_INPUT_HEIGHT 224
#define CLASSIFY_CLS_DIM 1000
#define CLASSIFY_ALL_OK 0x00000000 //
#define CLASSIFY_OUTPUT_SHAPE_ERROR 0x10030001 // 输出的维度有错误
#define CLASSIFY_INPUT_IMAGE_EMPTY 0x10030002 // 输入的图像为空
#define CLASSIFY_HANDLE_NULL 0x10030003 // 输入的句柄为空
#define CLASSIFY_OUTPUT_NULL 0x10030004 // 输入的返回结构体为空
#define CLASSIFY_SESSION_NULL 0x10030005 //
#define CLASSIFY_INIT_MODEL_PATH_NOT_EXIST 0x10030006 // 输入的模型路径不存在
#define CLASSIFY_CREATE_NET_FAILED 0x10030007 // 创建的模型失败
#define CLASSIFY_GET_NET_INPUT_FAILED 0x10030008 // 获取输入tensor失败
#define CLASSIFY_GET_NET_OUTPUT_CLS_FAILED 0x10030009 // 获取输出tensor失败
#define CLASSIFY_GET_NET_OUTPUT_FEAT_FAILED 0x1003000A // 获取输出tensor失败
#define CLASSIFY_GET_NET_SESSION_FAILED 0x1003000B // 获取输出session失败
#define CLASSIFY_FREE_SESSION_FAILED 0x1003000C // 释放session失败
#define CLASSIFY_INPUT_SIZE_ERROR 0x1003000D // 模型中获取的输入形状与设置的不一致
#define CLASSIFY_OUTPUT_CLS_SIZE_ERROR 0x10030010 // 模型中获取的输出维度与设置的不一致
#define CLASSIFY_OUTPUT_FEA_SIZE_ERROR 0x10030011 // 模型中获取的输出维度与设置的不一致
#define CLASSIFY_GETINFO_NAME_ILLEGAL 0x10030012 // 获取当前信息的Name非法
#define CLASSIFY_INIT_CACHE_DIR_CREATE_FAILED 0x10030013 // 创建cache dir失败
typedef struct _CLASSIFY_REGISTER_RES_
{
int success_flag; // 注册成功标志位:0-失败 1-成功
}CLASSIFY_REGISTER_RES;
// 分类的结果
typedef struct _CLASSIFY_CLS_RET_
{
float prob; // 置信度
int label; // 识别类别
}CLASSIFY_CLS_RET;
// 检索的结果
typedef struct _CLASSIFY_RETRI_RET_
{
float similarity; // 相似度
int index; // 检索位置
int label; // 检索类别
}CLASSIFY_RETRI_RET;
typedef struct _CLASSIFY_INPUT_
{
cv::Mat img;
}CLASSIFY_INPUT;
typedef struct _CLASSIFY_OUTPUT_
{
CLASSIFY_CLS_RET cls[CLASSIFY_CLS_TOP_N];
float feat[CLASSIFY_FEAT_DIM];
}CLASSIFY_OUTPUT;
// 定义算法的识别设备
typedef enum _CLASSIFY_DEVICE_
{
CLASSIFY_CPU = 0x0000, // CPU
CLASSIFY_GPU = 0x0001, // GPU
}CLASSIFY_DEVICE;
/***************************************************************************************************
* 功 能: 初始化
* 参 数:
* const char* model_path - I 模型路径或者cache路径文件夹路径
* 1. 内部会判断是文件夹还是文件
* 2. 如果是文件夹,则会在该文件夹下产生cache
* 3. 如果设置为NULL,则cache产生在当前exe同级目录下
* CLASSIFY_DEVICE device_name - I 设备类型
* void** CLASSIFY_handle - O 句柄
* 返回值: 错误码
***************************************************************************************************/
int CLASSIFY_Init(const char* model_path,
CLASSIFY_DEVICE device_type,
void** CLASSIFY_handle);
/***************************************************************************************************
* 功 能: 识别
* 参 数:
* CLASSIFY_INPUT in_img - I 输入图片
* CLASSIFY_OUTPUT* CLASSIFY_output - O 返回识别结果
* void* handle - I 句柄
* 返回值: 错误码
***************************************************************************************************/
int CLASSIFY_Process(CLASSIFY_INPUT in_img, CLASSIFY_OUTPUT* CLASSIFY_output, void* handle);
/***************************************************************************************************
* 功 能: 获取信息
* 参 数:
* void* handle - I 句柄
* char* name - I 信息名字
* 目前支持:running_device
* void* info - O 信息
* 返回值: 错误码
***************************************************************************************************/
int CLASSIFY_GetInfo(void* handle,const char* name, void* info);
/***************************************************************************************************
* 功 能: 释放句柄
* 参 数:
* void** handle - I 句柄
* 返回值: 错误码
***************************************************************************************************/
int CLASSIFY_Release(void** handle);
#endif
#pragma once
#ifndef _CLSC3D_ES_LIB_H_
#define _CLSC3D_ES_LIB_H_
#include <vector>
#include "opencv2/opencv.hpp"
#define CLSC3D_ES_CLS_TOP_N 10
#define CLSC3D_ES_INPUT_CHANNELS 1280
#define CLSC3D_ES_INPUT_DEPTH 3
#define CLSC3D_ES_INPUT_WIDTH 7
#define CLSC3D_ES_INPUT_HEIGHT 7
#define CLSC3D_ES_OUTPUT_CLSNUM 101
#define CLSC3D_ES_ALL_OK 0x00000000 //
#define CLSC3D_ES_OUTPUT_SHAPE_ERROR 0x10070001 // 输出的维度有错误
#define CLSC3D_ES_INPUT_IMAGE_EMPTY 0x10070002 // 输入的图像为空
#define CLSC3D_ES_HANDLE_NULL 0x10070003 // 输入的句柄为空
#define CLSC3D_ES_OUTPUT_NULL 0x10070004 // 输入的返回结构体为空
#define CLSC3D_ES_SESSION_NULL 0x10070005 //
#define CLSC3D_ES_INIT_MODEL_PATH_NOT_EXIST 0x10070006 // 输入的模型路径不存在
#define CLSC3D_ES_CREATE_NET_FAILED 0x10070007 // 创建的模型失败
#define CLSC3D_ES_GET_NET_INPUT_FAILED 0x10070008 // 获取输入tensor失败
#define CLSC3D_ES_GET_NET_OUTPUT_CLS_FAILED 0x10070009 // 获取输出tensor失败
#define CLSC3D_ES_GET_NET_OUTPUT_FEAT_FAILED 0x1007000A // 获取输出tensor失败
#define CLSC3D_ES_GET_NET_SESSION_FAILED 0x1007000B // 获取输出session失败
#define CLSC3D_ES_FREE_SESSION_FAILED 0x1007000C // 释放session失败
#define CLSC3D_ES_INPUT_SIZE_ERROR 0x1007000D // 模型中获取的输入形状与设置的不一致
#define CLSC3D_ES_OUTPUT_CLS_SIZE_ERROR 0x10070010 // 模型中获取的输出维度与设置的不一致
#define CLSC3D_ES_OUTPUT_FEA_SIZE_ERROR 0x10070011 // 模型中获取的输出维度与设置的不一致
#define CLSC3D_ES_GETINFO_NAME_ILLEGAL 0x10070012 // 获取当前信息的Name非法
#define CLSC3D_ES_INIT_CACHE_DIR_CREATE_FAILED 0x10070013 // 创建cache dir失败
// 分类的结果
typedef struct _CLSC3D_ES_CLS_RET_
{
float prob; // 置信度
int label; // 识别类别
}CLSC3D_ES_CLS_RET;
// 检索的结果
typedef struct _CLSC3D_ES_RETRI_RET_
{
float similarity; // 相似度
int index; // 检索位置
int label; // 检索类别
}CLSC3D_ES_RETRI_RET;
// 输入
typedef struct _CLSC3D_ES_INPUT_
{
std::vector<cv::Mat> imgs;
}CLSC3D_ES_INPUT;
typedef struct _CLSC3D_ES_OUTPUT_
{
CLSC3D_ES_CLS_RET cls[CLSC3D_ES_CLS_TOP_N];
float feat[CLSC3D_ES_INPUT_DEPTH];
}CLSC3D_ES_OUTPUT;
// 定义算法的识别设备
typedef enum _CLSC3D_ES_DEVICE_
{
CLSC3D_ES_CPU = 0x0000, // CPU
CLSC3D_ES_GPU = 0x0001, // GPU
}CLSC3D_ES_DEVICE;
// 定义初始化的输入信息
typedef struct _CLSC3D_INIT_INFO_
{
CLSC3D_ES_DEVICE init_device;
const char* model_path;
}CLSC3D_INIT_INFO;
/***************************************************************************************************
* 功 能: 初始化
* 参 数:
* const char* model_path - I 模型路径或者cache路径文件夹路径
* 1. 内部会判断是文件夹还是文件
* 2. 如果是文件夹,则会在该文件夹下产生cache
* 3. 如果设置为NULL,则cache产生在当前exe同级目录下
* CLSC3D_ES_DEVICE device_name - I 设备类型
* void** clsretri_handle - O 句柄
* 返回值: 错误码
***************************************************************************************************/
int CLSC3D_ES_Init(CLSC3D_INIT_INFO init_info,
void** clsretri_handle);
/***************************************************************************************************
* 功 能: 识别
* 参 数:
* CLSC3D_ES_INPUT in_img - I 输入图片
* CLSC3D_ES_OUTPUT* clsc3d_output - O 返回识别结果
* void* handle - I 句柄
* 返回值: 错误码
***************************************************************************************************/
int CLSC3D_ES_Process(CLSC3D_ES_INPUT in_img, CLSC3D_ES_OUTPUT* clsc3d_output, void* handle);
/***************************************************************************************************
* 功 能: 获取信息
* 参 数:
* void* handle - I 句柄
* char* name - I 信息名字
* 目前支持:running_device
* void* info - O 信息
* 返回值: 错误码
***************************************************************************************************/
int CLSC3D_ES_GetInfo(void* handle,const char* name, void* info);
/***************************************************************************************************
* 功 能: 释放句柄
* 参 数:
* void** handle - I 句柄
* 返回值: 错误码
***************************************************************************************************/
int CLSC3D_ES_Release(void** handle);
#endif
\ No newline at end of file
#pragma once
#ifndef _CLSRETRI_LIB_H_
#define _CLSRETRI_LIB_H_
#include <vector>
#include "opencv2/opencv.hpp"
#define CLSRETRI_CLS_TOP_N 10
#define CLSRETRI_FEAT_DIM 160
#define CLSRETRI_INPUT_WIDTH 224
#define CLSRETRI_INPUT_HEIGHT 224
#define CLSRETRI_CLS_DIM 1000
#define CLSRETRI_ALL_OK 0x00000000 //
#define CLSRETRI_OUTPUT_SHAPE_ERROR 0x10030001 // 输出的维度有错误
#define CLSRETRI_INPUT_IMAGE_EMPTY 0x10030002 // 输入的图像为空
#define CLSRETRI_HANDLE_NULL 0x10030003 // 输入的句柄为空
#define CLSRETRI_OUTPUT_NULL 0x10030004 // 输入的返回结构体为空
#define CLSRETRI_SESSION_NULL 0x10030005 //
#define CLSRETRI_INIT_MODEL_PATH_NOT_EXIST 0x10030006 // 输入的模型路径不存在
#define CLSRETRI_CREATE_NET_FAILED 0x10030007 // 创建的模型失败
#define CLSRETRI_GET_NET_INPUT_FAILED 0x10030008 // 获取输入tensor失败
#define CLSRETRI_GET_NET_OUTPUT_CLS_FAILED 0x10030009 // 获取输出tensor失败
#define CLSRETRI_GET_NET_OUTPUT_FEAT_FAILED 0x1003000A // 获取输出tensor失败
#define CLSRETRI_GET_NET_SESSION_FAILED 0x1003000B // 获取输出session失败
#define CLSRETRI_FREE_SESSION_FAILED 0x1003000C // 释放session失败
#define CLSRETRI_INPUT_SIZE_ERROR 0x1003000D // 模型中获取的输入形状与设置的不一致
#define CLSRETRI_OUTPUT_CLS_SIZE_ERROR 0x10030010 // 模型中获取的输出维度与设置的不一致
#define CLSRETRI_OUTPUT_FEA_SIZE_ERROR 0x10030011 // 模型中获取的输出维度与设置的不一致
#define CLSRETRI_GETINFO_NAME_ILLEGAL 0x10030012 // 获取当前信息的Name非法
#define CLSRETRI_INIT_CACHE_DIR_CREATE_FAILED 0x10030013 // 创建cache dir失败
typedef struct _CLSRETRI_REGISTER_RES_
{
int success_flag; // 注册成功标志位:0-失败 1-成功
}CLSRETRI_REGISTER_RES;
// 分类的结果
typedef struct _CLSRETRI_CLS_RET_
{
float prob; // 置信度
int label; // 识别类别
}CLSRETRI_CLS_RET;
// 检索的结果
typedef struct _CLSRETRI_RETRI_RET_
{
float similarity; // 相似度
int index; // 检索位置
int label; // 检索类别
}CLSRETRI_RETRI_RET;
typedef struct _CLSRETRI_INPUT_
{
cv::Mat img;
}CLSRETRI_INPUT;
typedef struct _CLSRETRI_OUTPUT_
{
CLSRETRI_CLS_RET cls[CLSRETRI_CLS_TOP_N];
float feat[CLSRETRI_FEAT_DIM];
}CLSRETRI_OUTPUT;
// 定义算法的识别设备
typedef enum _CLSRETRI_DEVICE_
{
CLSRETRI_CPU = 0x0000, // CPU
CLSRETRI_GPU = 0x0001, // GPU
}CLSRETRI_DEVICE;
/***************************************************************************************************
* 功 能: 初始化
* 参 数:
* const char* model_path - I 模型路径或者cache路径文件夹路径
* 1. 内部会判断是文件夹还是文件
* 2. 如果是文件夹,则会在该文件夹下产生cache
* 3. 如果设置为NULL,则cache产生在当前exe同级目录下
* CLSRETRI_DEVICE device_name - I 设备类型
* void** clsretri_handle - O 句柄
* 返回值: 错误码
***************************************************************************************************/
int CLSRETRI_Init(const char* model_path,
CLSRETRI_DEVICE device_type,
void** clsretri_handle);
/***************************************************************************************************
* 功 能: 识别
* 参 数:
* CLSRETRI_INPUT in_img - I 输入图片
* CLSRETRI_OUTPUT* clsretri_output - O 返回识别结果
* void* handle - I 句柄
* 返回值: 错误码
***************************************************************************************************/
int CLSRETRI_Process(CLSRETRI_INPUT in_img, CLSRETRI_OUTPUT* clsretri_output, void* handle);
/***************************************************************************************************
* 功 能: 获取信息
* 参 数:
* void* handle - I 句柄
* char* name - I 信息名字
* 目前支持:running_device
* void* info - O 信息
* 返回值: 错误码
***************************************************************************************************/
int CLSRETRI_GetInfo(void* handle,const char* name, void* info);
/***************************************************************************************************
* 功 能: 释放句柄
* 参 数:
* void** handle - I 句柄
* 返回值: 错误码
***************************************************************************************************/
int CLSRETRI_Release(void** handle);
#endif
\ No newline at end of file
#pragma once
#ifndef _CLSRETRI_ES_LIB_H_
#define _CLSRETRI_ES_LIB_H_
#include <vector>
#include "opencv2/opencv.hpp"
#define CLSRETRI_ES_CLS_TOP_N 10
#define CLSRETRI_ES_FEAT_DIM 160
#define CLSRETRI_ES_INPUT_WIDTH 96
#define CLSRETRI_ES_INPUT_HEIGHT 96
#define CLSRETRI_ES_CLS_DIM 2
#define CLSRETRI_ES_ALL_OK 0x00000000 //
#define CLSRETRI_ES_OUTPUT_SHAPE_ERROR 0x10060001 // 输出的维度有错误
#define CLSRETRI_ES_INPUT_IMAGE_EMPTY 0x10060002 // 输入的图像为空
#define CLSRETRI_ES_HANDLE_NULL 0x10060003 // 输入的句柄为空
#define CLSRETRI_ES_OUTPUT_NULL 0x10060004 // 输入的返回结构体为空
#define CLSRETRI_ES_SESSION_NULL 0x10060005 //
#define CLSRETRI_ES_INIT_MODEL_PATH_NOT_EXIST 0x10060006 // 输入的模型路径不存在
#define CLSRETRI_ES_CREATE_NET_FAILED 0x10060007 // 创建的模型失败
#define CLSRETRI_ES_GET_NET_INPUT_FAILED 0x10060008 // 获取输入tensor失败
#define CLSRETRI_ES_GET_NET_OUTPUT_CLS_FAILED 0x10060009 // 获取输出tensor失败
#define CLSRETRI_ES_GET_NET_OUTPUT_FEAT_FAILED 0x1006000A // 获取输出tensor失败
#define CLSRETRI_ES_GET_NET_SESSION_FAILED 0x1006000B // 获取输出session失败
#define CLSRETRI_ES_FREE_SESSION_FAILED 0x1006000C // 释放session失败
#define CLSRETRI_ES_INPUT_SIZE_ERROR 0x1006000D // 模型中获取的输入形状与设置的不一致
#define CLSRETRI_ES_OUTPUT_CLS_SIZE_ERROR 0x10060010 // 模型中获取的输出维度与设置的不一致
#define CLSRETRI_ES_OUTPUT_FEA_SIZE_ERROR 0x10060011 // 模型中获取的输出维度与设置的不一致
typedef struct _CLSRETRI_ES_REGISTER_RES_
{
int success_flag; // 注册成功标志位:0-失败 1-成功
}CLSRETRI_ES_REGISTER_RES;
// 分类的结果
typedef struct _CLSRETRI_ES_CLS_RET_
{
float prob; // 置信度
int label; // 识别类别
}CLSRETRI_ES_CLS_RET;
// 检索的结果
typedef struct _CLSRETRI_ES_RETRI_RET_
{
float similarity; // 相似度
int index; // 检索位置
int label; // 检索类别
}CLSRETRI_ES_RETRI_RET;
typedef struct _CLSRETRI_ES_INPUT_
{
cv::Mat img;
}CLSRETRI_ES_INPUT;
typedef struct _CLSRETRI_ES_OUTPUT_
{
CLSRETRI_ES_CLS_RET cls[CLSRETRI_ES_CLS_TOP_N];
float feat[CLSRETRI_ES_FEAT_DIM];
}CLSRETRI_ES_OUTPUT;
// 定义算法的识别设备
typedef enum _CLSRETRI_ES_DEVICE_
{
CLSRETRI_ES_CPU = 0x0000, // CPU
CLSRETRI_ES_GPU = 0x0001, // GPU
}CLSRETRI_ES_DEVICE;
/***************************************************************************************************
* 功 能: 初始化
* 参 数:
* const char* model_path - I 模型路径(这个可以设为NULL,表示用内置的模型)
* CLSRETRI_ES_DEVICE device_name - I 设备类型
* void** clsretri_handle - O 句柄
* 返回值: 错误码
***************************************************************************************************/
int CLSRETRI_ES_Init(const char* model_path,
CLSRETRI_ES_DEVICE device_type,
void** clsretri_handle);
/***************************************************************************************************
* 功 能: 识别
* 参 数:
* CLSRETRI_ES_INPUT in_img - I 输入图片
* CLSRETRI_ES_OUTPUT* clsretri_output - O 返回识别结果
* void* handle - I 句柄
* 返回值: 错误码
***************************************************************************************************/
int CLSRETRI_ES_Process(CLSRETRI_ES_INPUT in_img, CLSRETRI_ES_OUTPUT* clsretri_output, void* handle);
/***************************************************************************************************
* 功 能: 释放句柄
* 参 数:
* void** handle - I 句柄
* 返回值: 错误码
***************************************************************************************************/
int CLSRETRI_ES_Release(void** handle);
#endif
\ No newline at end of file
#pragma once
#ifndef _DET_LIB_H_
#define _DET_LIB_H_
#include <vector>
#include "opencv2/opencv.hpp"
#define DET_MAX_OBJ_NUM 15
#define DET_ALL_OK 0x00000000 //
#define DET_OUTPUT_SHAPE_ERROR 0x10040001 // 输出的维度有错误
#define DET_INPUT_IMAGE_EMPTY 0x10040002 // 输入的图像为空
#define DET_HANDLE_NULL 0x10040003 // 输入的句柄为空
#define DET_OUTPUT_NULL 0x10040004 // 输入的返回结构体为空
#define DET_SESSION_NULL 0x10040005 //
#define DET_INIT_MODEL_PATH_NOT_EXIST 0x10040006 // 输入的模型路径不存在
#define DET_CREATE_NET_FAILED 0x10040007 // 创建的模型失败
#define DET_GET_NET_INPUT_FAILED 0x10040008 // 获取输入tensor失败
#define DET_GET_NET_OUTPUT_13_FAILED 0x10040009 // 获取输出tensor失败
#define DET_GET_NET_OUTPUT_26_FAILED 0x1004000A // 获取输出tensor失败
#define DET_GET_NET_OUTPUT_52_FAILED 0x1004000B // 获取输出tensor失败
#define DET_OUTPUT_13_SHAPE_ERROR 0x1004000C // 获取输出tensor的shape与设置的不一致
#define DET_OUTPUT_26_SHAPE_ERROR 0x1004000D // 获取输出tensor的shape与设置的不一致
#define DET_OUTPUT_52_SHAPE_ERROR 0x10040010 // 获取输出tensor的shape与设置的不一致
#define DET_GET_NET_SESSION_FAILED 0x10040011 // 获取输出session失败
#define DET_FREE_SESSION_FAILED 0x10040012 // 释放session失败
#define DET_INPUT_SHAPE_ERROR 0x10040013 // 获取输入tensor的shape与设置的不一致
typedef struct _DET_INPUT_
{
cv::Mat img;
}DET_INPUT;
typedef struct _DET_SINGLE_OUTPUT_
{
float x1;
float y1;
float x2;
float y2;
float prob;
int id;
int label;
}DET_SINGLE_OUTPUT;
typedef struct _DET_OUTPUT_
{
std::vector < DET_SINGLE_OUTPUT> output_list;
}DET_OUTPUT;
// 定义算法的识别设备
typedef enum _DET_DEVICE_
{
DET_CPU = 0x0000, // CPU
DET_GPU = 0x0001, // GPU
}DET_DEVICE;
/***************************************************************************************************
* 功 能: 初始化
* 参 数:
* const char* model_path - I 模型路径(这个可以设为NULL,表示用内置的模型)
* DET_DEVICE device_name - I 设备类型
* void** clsretri_handle - O 句柄
* 返回值: 错误码
***************************************************************************************************/
int DET_Init(const char* model_path,
DET_DEVICE device_type,
void** clsretri_handle);
/***************************************************************************************************
* 功 能: 识别
* 参 数:
* DET_INPUT in_img - I 输入图片
* DET_OUTPUT* clsretri_output - O 返回识别结果
* void* handle - I 句柄
* 返回值: 错误码
***************************************************************************************************/
int DET_Process(DET_INPUT in_img, DET_OUTPUT* clsretri_output, void* handle);
/***************************************************************************************************
* 功 能: 释放句柄
* 参 数:
* void** handle - I 句柄
* 返回值: 错误码
***************************************************************************************************/
int DET_Release(void** handle);
#endif
\ No newline at end of file
#pragma once
#ifndef _DETFEA_LIB_H_
#define _DETFEA_LIB_H_
#include <vector>
#include "opencv2/opencv.hpp"
#define DETFEA_CLS_TOP_N 10
#define DETFEA_FEAT_DIM 160
#define DETFEA_ALL_OK 0x00000000 //
#define DETFEA_HANDLE_NULL 0x10050001 // 输入句柄为空
#define DETFEA_INPUT_IMAGE_EMPTY 0x10050002 // 输入图像为空
#define DETFEA_OUTPUT_NULL 0x10050003 // 输入的输出结构体为空
typedef struct _DETFEA_INPUT_
{
cv::Mat img;
}DETFEA_INPUT;
typedef struct _DETFEA_SINGLE_OUTPUT_
{
float x1;
float y1;
float x2;
float y2;
float prob;
int id;
int label;
float feat[DETFEA_FEAT_DIM];
}DETFEA_SINGLE_OUTPUT;
typedef struct _DETFEA_OUTPUT_
{
std::vector < DETFEA_SINGLE_OUTPUT> output_list;
}DETFEA_OUTPUT;
// 定义算法的识别设备
typedef enum _DETFEA_DEVICE_
{
DETFEA_CPU = 0x0000, // CPU
DETFEA_GPU = 0x0001, // GPU
}DETFEA_DEVICE;
/***************************************************************************************************
* 功 能: 初始化
* 参 数:
* const char* model_path - I 模型路径(这个可以设为NULL,表示用内置的模型)
* DETFEA_DEVICE device_name - I 设备类型
* void** detfea_handle - O 句柄
* 返回值: 错误码
***************************************************************************************************/
int DETFEA_Init(const char* model_path1,
const char* model_path2,
DETFEA_DEVICE device_type,
void** handle);
/***************************************************************************************************
* 功 能: 识别
* 参 数:
* DETFEA_INPUT in_img - I 输入图片
* DETFEA_OUTPUT* detfea_output - O 返回识别结果
* void* handle - I 句柄
* 返回值: 错误码
***************************************************************************************************/
int DETFEA_Process(DETFEA_INPUT in_img, DETFEA_OUTPUT* detfea_output, void* handle);
/***************************************************************************************************
* 功 能: 释放句柄
* 参 数:
* void** handle - I 句柄
* 返回值: 错误码
***************************************************************************************************/
int DETFEA_Release(void** handle);
#endif
\ No newline at end of file
This diff is collapsed.
/*M///////////////////////////////////////////////////////////////////////////////////////
//
// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
//
// By downloading, copying, installing or using the software you agree to this license.
// If you do not agree to this license, do not download, install,
// copy or use the software.
//
//
// License Agreement
// For Open Source Computer Vision Library
//
// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
// Copyright (C) 2009, Willow Garage Inc., all rights reserved.
// Copyright (C) 2013, OpenCV Foundation, all rights reserved.
// Third party copyrights are property of their respective owners.
//
// Redistribution and use in source and binary forms, with or without modification,
// are permitted provided that the following conditions are met:
//
// * Redistribution's of source code must retain the above copyright notice,
// this list of conditions and the following disclaimer.
//
// * Redistribution's in binary form must reproduce the above copyright notice,
// this list of conditions and the following disclaimer in the documentation
// and/or other materials provided with the distribution.
//
// * The name of the copyright holders may not be used to endorse or promote products
// derived from this software without specific prior written permission.
//
// This software is provided by the copyright holders and contributors "as is" and
// any express or implied warranties, including, but not limited to, the implied
// warranties of merchantability and fitness for a particular purpose are disclaimed.
// In no event shall the Intel Corporation or contributors be liable for any direct,
// indirect, incidental, special, exemplary, or consequential damages
// (including, but not limited to, procurement of substitute goods or services;
// loss of use, data, or profits; or business interruption) however caused
// and on any theory of liability, whether in contract, strict liability,
// or tort (including negligence or otherwise) arising in any way out of
// the use of this software, even if advised of the possibility of such damage.
//
//M*/
#ifdef __OPENCV_BUILD
#error this is a compatibility header which should not be used inside the OpenCV library
#endif
#include "opencv2/calib3d.hpp"
/*M///////////////////////////////////////////////////////////////////////////////////////
//
// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
//
// By downloading, copying, installing or using the software you agree to this license.
// If you do not agree to this license, do not download, install,
// copy or use the software.
//
//
// License Agreement
// For Open Source Computer Vision Library
//
// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
// Copyright (C) 2009, Willow Garage Inc., all rights reserved.
// Copyright (C) 2013, OpenCV Foundation, all rights reserved.
// Third party copyrights are property of their respective owners.
//
// Redistribution and use in source and binary forms, with or without modification,
// are permitted provided that the following conditions are met:
//
// * Redistribution's of source code must retain the above copyright notice,
// this list of conditions and the following disclaimer.
//
// * Redistribution's in binary form must reproduce the above copyright notice,
// this list of conditions and the following disclaimer in the documentation
// and/or other materials provided with the distribution.
//
// * The name of the copyright holders may not be used to endorse or promote products
// derived from this software without specific prior written permission.
//
// This software is provided by the copyright holders and contributors "as is" and
// any express or implied warranties, including, but not limited to, the implied
// warranties of merchantability and fitness for a particular purpose are disclaimed.
// In no event shall the Intel Corporation or contributors be liable for any direct,
// indirect, incidental, special, exemplary, or consequential damages
// (including, but not limited to, procurement of substitute goods or services;
// loss of use, data, or profits; or business interruption) however caused
// and on any theory of liability, whether in contract, strict liability,
// or tort (including negligence or otherwise) arising in any way out of
// the use of this software, even if advised of the possibility of such damage.
//
//M*/
#ifndef OPENCV_CALIB3D_C_H
#define OPENCV_CALIB3D_C_H
#include "opencv2/core/types_c.h"
#ifdef __cplusplus
extern "C" {
#endif
/* Calculates fundamental matrix given a set of corresponding points */
#define CV_FM_7POINT 1
#define CV_FM_8POINT 2
#define CV_LMEDS 4
#define CV_RANSAC 8
#define CV_FM_LMEDS_ONLY CV_LMEDS
#define CV_FM_RANSAC_ONLY CV_RANSAC
#define CV_FM_LMEDS CV_LMEDS
#define CV_FM_RANSAC CV_RANSAC
enum
{
CV_ITERATIVE = 0,
CV_EPNP = 1, // F.Moreno-Noguer, V.Lepetit and P.Fua "EPnP: Efficient Perspective-n-Point Camera Pose Estimation"
CV_P3P = 2, // X.S. Gao, X.-R. Hou, J. Tang, H.-F. Chang; "Complete Solution Classification for the Perspective-Three-Point Problem"
CV_DLS = 3 // Joel A. Hesch and Stergios I. Roumeliotis. "A Direct Least-Squares (DLS) Method for PnP"
};
#define CV_CALIB_CB_ADAPTIVE_THRESH 1
#define CV_CALIB_CB_NORMALIZE_IMAGE 2
#define CV_CALIB_CB_FILTER_QUADS 4
#define CV_CALIB_CB_FAST_CHECK 8
#define CV_CALIB_USE_INTRINSIC_GUESS 1
#define CV_CALIB_FIX_ASPECT_RATIO 2
#define CV_CALIB_FIX_PRINCIPAL_POINT 4
#define CV_CALIB_ZERO_TANGENT_DIST 8
#define CV_CALIB_FIX_FOCAL_LENGTH 16
#define CV_CALIB_FIX_K1 32
#define CV_CALIB_FIX_K2 64
#define CV_CALIB_FIX_K3 128
#define CV_CALIB_FIX_K4 2048
#define CV_CALIB_FIX_K5 4096
#define CV_CALIB_FIX_K6 8192
#define CV_CALIB_RATIONAL_MODEL 16384
#define CV_CALIB_THIN_PRISM_MODEL 32768
#define CV_CALIB_FIX_S1_S2_S3_S4 65536
#define CV_CALIB_TILTED_MODEL 262144
#define CV_CALIB_FIX_TAUX_TAUY 524288
#define CV_CALIB_FIX_TANGENT_DIST 2097152
#define CV_CALIB_NINTRINSIC 18
#define CV_CALIB_FIX_INTRINSIC 256
#define CV_CALIB_SAME_FOCAL_LENGTH 512
#define CV_CALIB_ZERO_DISPARITY 1024
/* stereo correspondence parameters and functions */
#define CV_STEREO_BM_NORMALIZED_RESPONSE 0
#define CV_STEREO_BM_XSOBEL 1
#ifdef __cplusplus
} // extern "C"
//////////////////////////////////////////////////////////////////////////////////////////
class CV_EXPORTS CvLevMarq
{
public:
CvLevMarq();
CvLevMarq( int nparams, int nerrs, CvTermCriteria criteria=
cvTermCriteria(CV_TERMCRIT_EPS+CV_TERMCRIT_ITER,30,DBL_EPSILON),
bool completeSymmFlag=false );
~CvLevMarq();
void init( int nparams, int nerrs, CvTermCriteria criteria=
cvTermCriteria(CV_TERMCRIT_EPS+CV_TERMCRIT_ITER,30,DBL_EPSILON),
bool completeSymmFlag=false );
bool update( const CvMat*& param, CvMat*& J, CvMat*& err );
bool updateAlt( const CvMat*& param, CvMat*& JtJ, CvMat*& JtErr, double*& errNorm );
void clear();
void step();
enum { DONE=0, STARTED=1, CALC_J=2, CHECK_ERR=3 };
cv::Ptr<CvMat> mask;
cv::Ptr<CvMat> prevParam;
cv::Ptr<CvMat> param;
cv::Ptr<CvMat> J;
cv::Ptr<CvMat> err;
cv::Ptr<CvMat> JtJ;
cv::Ptr<CvMat> JtJN;
cv::Ptr<CvMat> JtErr;
cv::Ptr<CvMat> JtJV;
cv::Ptr<CvMat> JtJW;
double prevErrNorm, errNorm;
int lambdaLg10;
CvTermCriteria criteria;
int state;
int iters;
bool completeSymmFlag;
int solveMethod;
};
#endif
#endif /* OPENCV_CALIB3D_C_H */
This diff is collapsed.
This diff is collapsed.
// This file is part of OpenCV project.
// It is subject to the license terms in the LICENSE file found in the top-level directory
// of this distribution and at http://opencv.org/license.html.
#ifndef OPENCV_CORE_ASYNC_HPP
#define OPENCV_CORE_ASYNC_HPP
#include <opencv2/core/mat.hpp>
#ifdef CV_CXX11
//#include <future>
#include <chrono>
#endif
namespace cv {
/** @addtogroup core_async
@{
*/
/** @brief Returns result of asynchronous operations
Object has attached asynchronous state.
Assignment operator doesn't clone asynchronous state (it is shared between all instances).
Result can be fetched via get() method only once.
*/
class CV_EXPORTS_W AsyncArray
{
public:
~AsyncArray() CV_NOEXCEPT;
CV_WRAP AsyncArray() CV_NOEXCEPT;
AsyncArray(const AsyncArray& o) CV_NOEXCEPT;
AsyncArray& operator=(const AsyncArray& o) CV_NOEXCEPT;
CV_WRAP void release() CV_NOEXCEPT;
/** Fetch the result.
@param[out] dst destination array
Waits for result until container has valid result.
Throws exception if exception was stored as a result.
Throws exception on invalid container state.
@note Result or stored exception can be fetched only once.
*/
CV_WRAP void get(OutputArray dst) const;
/** Retrieving the result with timeout
@param[out] dst destination array
@param[in] timeoutNs timeout in nanoseconds, -1 for infinite wait
@returns true if result is ready, false if the timeout has expired
@note Result or stored exception can be fetched only once.
*/
bool get(OutputArray dst, int64 timeoutNs) const;
CV_WRAP inline
bool get(OutputArray dst, double timeoutNs) const { return get(dst, (int64)timeoutNs); }
bool wait_for(int64 timeoutNs) const;
CV_WRAP inline
bool wait_for(double timeoutNs) const { return wait_for((int64)timeoutNs); }
CV_WRAP bool valid() const CV_NOEXCEPT;
#ifdef CV_CXX11
inline AsyncArray(AsyncArray&& o) { p = o.p; o.p = NULL; }
inline AsyncArray& operator=(AsyncArray&& o) CV_NOEXCEPT { std::swap(p, o.p); return *this; }
template<typename _Rep, typename _Period>
inline bool get(OutputArray dst, const std::chrono::duration<_Rep, _Period>& timeout)
{
return get(dst, (int64)(std::chrono::nanoseconds(timeout).count()));
}
template<typename _Rep, typename _Period>
inline bool wait_for(const std::chrono::duration<_Rep, _Period>& timeout)
{
return wait_for((int64)(std::chrono::nanoseconds(timeout).count()));
}
#if 0
std::future<Mat> getFutureMat() const;
std::future<UMat> getFutureUMat() const;
#endif
#endif
// PImpl
struct Impl; friend struct Impl;
inline void* _getImpl() const CV_NOEXCEPT { return p; }
protected:
Impl* p;
};
//! @}
} // namespace
#endif // OPENCV_CORE_ASYNC_HPP
This diff is collapsed.
// This file is part of OpenCV project.
// It is subject to the license terms in the LICENSE file found in the top-level directory
// of this distribution and at http://opencv.org/license.html.
#ifndef OPENCV_CORE_BINDINGS_UTILS_HPP
#define OPENCV_CORE_BINDINGS_UTILS_HPP
#include <opencv2/core/async.hpp>
#include <opencv2/core/detail/async_promise.hpp>
namespace cv { namespace utils {
//! @addtogroup core_utils
//! @{
CV_EXPORTS_W String dumpInputArray(InputArray argument);
CV_EXPORTS_W String dumpInputArrayOfArrays(InputArrayOfArrays argument);
CV_EXPORTS_W String dumpInputOutputArray(InputOutputArray argument);
CV_EXPORTS_W String dumpInputOutputArrayOfArrays(InputOutputArrayOfArrays argument);
CV_WRAP static inline
AsyncArray testAsyncArray(InputArray argument)
{
AsyncPromise p;
p.setValue(argument);
return p.getArrayResult();
}
CV_WRAP static inline
AsyncArray testAsyncException()
{
AsyncPromise p;
try
{
CV_Error(Error::StsOk, "Test: Generated async error");
}
catch (const cv::Exception& e)
{
p.setException(e);
}
return p.getArrayResult();
}
//! @}
}} // namespace
#endif // OPENCV_CORE_BINDINGS_UTILS_HPP
// This file is part of OpenCV project.
// It is subject to the license terms in the LICENSE file found in the top-level directory
// of this distribution and at http://opencv.org/license.html.
//
// Copyright (C) 2014, Advanced Micro Devices, Inc., all rights reserved.
#ifndef OPENCV_CORE_BUFFER_POOL_HPP
#define OPENCV_CORE_BUFFER_POOL_HPP
#ifdef _MSC_VER
#pragma warning(push)
#pragma warning(disable: 4265)
#endif
namespace cv
{
//! @addtogroup core
//! @{
class BufferPoolController
{
protected:
~BufferPoolController() { }
public:
virtual size_t getReservedSize() const = 0;
virtual size_t getMaxReservedSize() const = 0;
virtual void setMaxReservedSize(size_t size) = 0;
virtual void freeAllReservedBuffers() = 0;
};
//! @}
}
#ifdef _MSC_VER
#pragma warning(pop)
#endif
#endif // OPENCV_CORE_BUFFER_POOL_HPP
// This file is part of OpenCV project.
// It is subject to the license terms in the LICENSE file found in the top-level directory
// of this distribution and at http://opencv.org/license.html.
#ifndef OPENCV_CORE_CHECK_HPP
#define OPENCV_CORE_CHECK_HPP
#include <opencv2/core/base.hpp>
namespace cv {
/** Returns string of cv::Mat depth value: CV_8U -> "CV_8U" or "<invalid depth>" */
CV_EXPORTS const char* depthToString(int depth);
/** Returns string of cv::Mat depth value: CV_8UC3 -> "CV_8UC3" or "<invalid type>" */
CV_EXPORTS const String typeToString(int type);
//! @cond IGNORED
namespace detail {
/** Returns string of cv::Mat depth value: CV_8U -> "CV_8U" or NULL */
CV_EXPORTS const char* depthToString_(int depth);
/** Returns string of cv::Mat depth value: CV_8UC3 -> "CV_8UC3" or cv::String() */
CV_EXPORTS const cv::String typeToString_(int type);
enum TestOp {
TEST_CUSTOM = 0,
TEST_EQ = 1,
TEST_NE = 2,
TEST_LE = 3,
TEST_LT = 4,
TEST_GE = 5,
TEST_GT = 6,
CV__LAST_TEST_OP
};
struct CheckContext {
const char* func;
const char* file;
int line;
enum TestOp testOp;
const char* message;
const char* p1_str;
const char* p2_str;
};
#ifndef CV__CHECK_FILENAME
# define CV__CHECK_FILENAME __FILE__
#endif
#ifndef CV__CHECK_FUNCTION
# if defined _MSC_VER
# define CV__CHECK_FUNCTION __FUNCSIG__
# elif defined __GNUC__
# define CV__CHECK_FUNCTION __PRETTY_FUNCTION__
# else
# define CV__CHECK_FUNCTION "<unknown>"
# endif
#endif
#define CV__CHECK_LOCATION_VARNAME(id) CVAUX_CONCAT(CVAUX_CONCAT(__cv_check_, id), __LINE__)
#define CV__DEFINE_CHECK_CONTEXT(id, message, testOp, p1_str, p2_str) \
static const cv::detail::CheckContext CV__CHECK_LOCATION_VARNAME(id) = \
{ CV__CHECK_FUNCTION, CV__CHECK_FILENAME, __LINE__, testOp, message, p1_str, p2_str }
CV_EXPORTS void CV_NORETURN check_failed_auto(const int v1, const int v2, const CheckContext& ctx);
CV_EXPORTS void CV_NORETURN check_failed_auto(const size_t v1, const size_t v2, const CheckContext& ctx);
CV_EXPORTS void CV_NORETURN check_failed_auto(const float v1, const float v2, const CheckContext& ctx);
CV_EXPORTS void CV_NORETURN check_failed_auto(const double v1, const double v2, const CheckContext& ctx);
CV_EXPORTS void CV_NORETURN check_failed_auto(const Size_<int> v1, const Size_<int> v2, const CheckContext& ctx);
CV_EXPORTS void CV_NORETURN check_failed_MatDepth(const int v1, const int v2, const CheckContext& ctx);
CV_EXPORTS void CV_NORETURN check_failed_MatType(const int v1, const int v2, const CheckContext& ctx);
CV_EXPORTS void CV_NORETURN check_failed_MatChannels(const int v1, const int v2, const CheckContext& ctx);
CV_EXPORTS void CV_NORETURN check_failed_auto(const int v, const CheckContext& ctx);
CV_EXPORTS void CV_NORETURN check_failed_auto(const size_t v, const CheckContext& ctx);
CV_EXPORTS void CV_NORETURN check_failed_auto(const float v, const CheckContext& ctx);
CV_EXPORTS void CV_NORETURN check_failed_auto(const double v, const CheckContext& ctx);
CV_EXPORTS void CV_NORETURN check_failed_auto(const Size_<int> v, const CheckContext& ctx);
CV_EXPORTS void CV_NORETURN check_failed_MatDepth(const int v, const CheckContext& ctx);
CV_EXPORTS void CV_NORETURN check_failed_MatType(const int v, const CheckContext& ctx);
CV_EXPORTS void CV_NORETURN check_failed_MatChannels(const int v, const CheckContext& ctx);
#define CV__TEST_EQ(v1, v2) ((v1) == (v2))
#define CV__TEST_NE(v1, v2) ((v1) != (v2))
#define CV__TEST_LE(v1, v2) ((v1) <= (v2))
#define CV__TEST_LT(v1, v2) ((v1) < (v2))
#define CV__TEST_GE(v1, v2) ((v1) >= (v2))
#define CV__TEST_GT(v1, v2) ((v1) > (v2))
#define CV__CHECK(id, op, type, v1, v2, v1_str, v2_str, msg_str) do { \
if(CV__TEST_##op((v1), (v2))) ; else { \
CV__DEFINE_CHECK_CONTEXT(id, msg_str, cv::detail::TEST_ ## op, v1_str, v2_str); \
cv::detail::check_failed_ ## type((v1), (v2), CV__CHECK_LOCATION_VARNAME(id)); \
} \
} while (0)
#define CV__CHECK_CUSTOM_TEST(id, type, v, test_expr, v_str, test_expr_str, msg_str) do { \
if(!!(test_expr)) ; else { \
CV__DEFINE_CHECK_CONTEXT(id, msg_str, cv::detail::TEST_CUSTOM, v_str, test_expr_str); \
cv::detail::check_failed_ ## type((v), CV__CHECK_LOCATION_VARNAME(id)); \
} \
} while (0)
} // namespace
//! @endcond
/// Supported values of these types: int, float, double
#define CV_CheckEQ(v1, v2, msg) CV__CHECK(_, EQ, auto, v1, v2, #v1, #v2, msg)
#define CV_CheckNE(v1, v2, msg) CV__CHECK(_, NE, auto, v1, v2, #v1, #v2, msg)
#define CV_CheckLE(v1, v2, msg) CV__CHECK(_, LE, auto, v1, v2, #v1, #v2, msg)
#define CV_CheckLT(v1, v2, msg) CV__CHECK(_, LT, auto, v1, v2, #v1, #v2, msg)
#define CV_CheckGE(v1, v2, msg) CV__CHECK(_, GE, auto, v1, v2, #v1, #v2, msg)
#define CV_CheckGT(v1, v2, msg) CV__CHECK(_, GT, auto, v1, v2, #v1, #v2, msg)
/// Check with additional "decoding" of type values in error message
#define CV_CheckTypeEQ(t1, t2, msg) CV__CHECK(_, EQ, MatType, t1, t2, #t1, #t2, msg)
/// Check with additional "decoding" of depth values in error message
#define CV_CheckDepthEQ(d1, d2, msg) CV__CHECK(_, EQ, MatDepth, d1, d2, #d1, #d2, msg)
#define CV_CheckChannelsEQ(c1, c2, msg) CV__CHECK(_, EQ, MatChannels, c1, c2, #c1, #c2, msg)
/// Example: type == CV_8UC1 || type == CV_8UC3
#define CV_CheckType(t, test_expr, msg) CV__CHECK_CUSTOM_TEST(_, MatType, t, (test_expr), #t, #test_expr, msg)
/// Example: depth == CV_32F || depth == CV_64F
#define CV_CheckDepth(t, test_expr, msg) CV__CHECK_CUSTOM_TEST(_, MatDepth, t, (test_expr), #t, #test_expr, msg)
/// Example: v == A || v == B
#define CV_Check(v, test_expr, msg) CV__CHECK_CUSTOM_TEST(_, auto, v, (test_expr), #v, #test_expr, msg)
/// Some complex conditions: CV_Check(src2, src2.empty() || (src2.type() == src1.type() && src2.size() == src1.size()), "src2 should have same size/type as src1")
// TODO define pretty-printers
#ifndef NDEBUG
#define CV_DbgCheck(v, test_expr, msg) CV__CHECK_CUSTOM_TEST(_, auto, v, (test_expr), #v, #test_expr, msg)
#define CV_DbgCheckEQ(v1, v2, msg) CV__CHECK(_, EQ, auto, v1, v2, #v1, #v2, msg)
#define CV_DbgCheckNE(v1, v2, msg) CV__CHECK(_, NE, auto, v1, v2, #v1, #v2, msg)
#define CV_DbgCheckLE(v1, v2, msg) CV__CHECK(_, LE, auto, v1, v2, #v1, #v2, msg)
#define CV_DbgCheckLT(v1, v2, msg) CV__CHECK(_, LT, auto, v1, v2, #v1, #v2, msg)
#define CV_DbgCheckGE(v1, v2, msg) CV__CHECK(_, GE, auto, v1, v2, #v1, #v2, msg)
#define CV_DbgCheckGT(v1, v2, msg) CV__CHECK(_, GT, auto, v1, v2, #v1, #v2, msg)
#else
#define CV_DbgCheck(v, test_expr, msg) do { } while (0)
#define CV_DbgCheckEQ(v1, v2, msg) do { } while (0)
#define CV_DbgCheckNE(v1, v2, msg) do { } while (0)
#define CV_DbgCheckLE(v1, v2, msg) do { } while (0)
#define CV_DbgCheckLT(v1, v2, msg) do { } while (0)
#define CV_DbgCheckGE(v1, v2, msg) do { } while (0)
#define CV_DbgCheckGT(v1, v2, msg) do { } while (0)
#endif
} // namespace
#endif // OPENCV_CORE_CHECK_HPP
/*M///////////////////////////////////////////////////////////////////////////////////////
//
// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
//
// By downloading, copying, installing or using the software you agree to this license.
// If you do not agree to this license, do not download, install,
// copy or use the software.
//
//
// License Agreement
// For Open Source Computer Vision Library
//
// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
// Copyright (C) 2009, Willow Garage Inc., all rights reserved.
// Copyright (C) 2013, OpenCV Foundation, all rights reserved.
// Third party copyrights are property of their respective owners.
//
// Redistribution and use in source and binary forms, with or without modification,
// are permitted provided that the following conditions are met:
//
// * Redistribution's of source code must retain the above copyright notice,
// this list of conditions and the following disclaimer.
//
// * Redistribution's in binary form must reproduce the above copyright notice,
// this list of conditions and the following disclaimer in the documentation
// and/or other materials provided with the distribution.
//
// * The name of the copyright holders may not be used to endorse or promote products
// derived from this software without specific prior written permission.
//
// This software is provided by the copyright holders and contributors "as is" and
// any express or implied warranties, including, but not limited to, the implied
// warranties of merchantability and fitness for a particular purpose are disclaimed.
// In no event shall the Intel Corporation or contributors be liable for any direct,
// indirect, incidental, special, exemplary, or consequential damages
// (including, but not limited to, procurement of substitute goods or services;
// loss of use, data, or profits; or business interruption) however caused
// and on any theory of liability, whether in contract, strict liability,
// or tort (including negligence or otherwise) arising in any way out of
// the use of this software, even if advised of the possibility of such damage.
//
//M*/
#ifdef __OPENCV_BUILD
#error this is a compatibility header which should not be used inside the OpenCV library
#endif
#include "opencv2/core.hpp"
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
/*M///////////////////////////////////////////////////////////////////////////////////////
//
// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
//
// By downloading, copying, installing or using the software you agree to this license.
// If you do not agree to this license, do not download, install,
// copy or use the software.
//
//
// License Agreement
// For Open Source Computer Vision Library
//
// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
// Copyright (C) 2009, Willow Garage Inc., all rights reserved.
// Third party copyrights are property of their respective owners.
//
// Redistribution and use in source and binary forms, with or without modification,
// are permitted provided that the following conditions are met:
//
// * Redistribution's of source code must retain the above copyright notice,
// this list of conditions and the following disclaimer.
//
// * Redistribution's in binary form must reproduce the above copyright notice,
// this list of conditions and the following disclaimer in the documentation
// and/or other materials provided with the distribution.
//
// * The name of the copyright holders may not be used to endorse or promote products
// derived from this software without specific prior written permission.
//
// This software is provided by the copyright holders and contributors "as is" and
// any express or implied warranties, including, but not limited to, the implied
// warranties of merchantability and fitness for a particular purpose are disclaimed.
// In no event shall the Intel Corporation or contributors be liable for any direct,
// indirect, incidental, special, exemplary, or consequential damages
// (including, but not limited to, procurement of substitute goods or services;
// loss of use, data, or profits; or business interruption) however caused
// and on any theory of liability, whether in contract, strict liability,
// or tort (including negligence or otherwise) arising in any way out of
// the use of this software, even if advised of the possibility of such damage.
//
//M*/
#ifndef OPENCV_CUDA_COMMON_HPP
#define OPENCV_CUDA_COMMON_HPP
#include <cuda_runtime.h>
#include "opencv2/core/cuda_types.hpp"
#include "opencv2/core/cvdef.h"
#include "opencv2/core/base.hpp"
/** @file
* @deprecated Use @ref cudev instead.
*/
//! @cond IGNORED
#ifndef CV_PI_F
#ifndef CV_PI
#define CV_PI_F 3.14159265f
#else
#define CV_PI_F ((float)CV_PI)
#endif
#endif
namespace cv { namespace cuda {
static inline void checkCudaError(cudaError_t err, const char* file, const int line, const char* func)
{
if (cudaSuccess != err)
cv::error(cv::Error::GpuApiCallError, cudaGetErrorString(err), func, file, line);
}
}}
#ifndef cudaSafeCall
#define cudaSafeCall(expr) cv::cuda::checkCudaError(expr, __FILE__, __LINE__, CV_Func)
#endif
namespace cv { namespace cuda
{
template <typename T> static inline bool isAligned(const T* ptr, size_t size)
{
return reinterpret_cast<size_t>(ptr) % size == 0;
}
static inline bool isAligned(size_t step, size_t size)
{
return step % size == 0;
}
}}
namespace cv { namespace cuda
{
namespace device
{
__host__ __device__ __forceinline__ int divUp(int total, int grain)
{
return (total + grain - 1) / grain;
}
template<class T> inline void bindTexture(const textureReference* tex, const PtrStepSz<T>& img)
{
cudaChannelFormatDesc desc = cudaCreateChannelDesc<T>();
cudaSafeCall( cudaBindTexture2D(0, tex, img.ptr(), &desc, img.cols, img.rows, img.step) );
}
}
}}
//! @endcond
#endif // OPENCV_CUDA_COMMON_HPP
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
// This file is part of OpenCV project.
// It is subject to the license terms in the LICENSE file found in the top-level directory
// of this distribution and at http://opencv.org/license.html.
#ifndef OPENCV_CORE_DETAILS_EXCEPTION_PTR_H
#define OPENCV_CORE_DETAILS_EXCEPTION_PTR_H
#ifndef CV__EXCEPTION_PTR
# if defined(__ANDROID__) && defined(ATOMIC_INT_LOCK_FREE) && ATOMIC_INT_LOCK_FREE < 2
# define CV__EXCEPTION_PTR 0 // Not supported, details: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=58938
# elif defined(CV_CXX11)
# define CV__EXCEPTION_PTR 1
# elif defined(_MSC_VER)
# define CV__EXCEPTION_PTR (_MSC_VER >= 1600)
# elif defined(__clang__)
# define CV__EXCEPTION_PTR 0 // C++11 only (see above)
# elif defined(__GNUC__) && defined(__GXX_EXPERIMENTAL_CXX0X__)
# define CV__EXCEPTION_PTR (__GXX_EXPERIMENTAL_CXX0X__ > 0)
# endif
#endif
#ifndef CV__EXCEPTION_PTR
# define CV__EXCEPTION_PTR 0
#elif CV__EXCEPTION_PTR
# include <exception> // std::exception_ptr
#endif
#endif // OPENCV_CORE_DETAILS_EXCEPTION_PTR_H
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment