福州瑞芯微电子股份有限公司 密级状态 : 绝密 ( ) 秘密 ( ) 内部 ( ) 公开 ( ) RK3399Pro_Linux&Android_RKNN_API_V0.9.2_ ( 技术部, 图形显示平台中心 ) 文件状态 : 当前版本 : V0.9.2 [ ] 正在修改 [ ]

Size: px
Start display at page:

Download "福州瑞芯微电子股份有限公司 密级状态 : 绝密 ( ) 秘密 ( ) 内部 ( ) 公开 ( ) RK3399Pro_Linux&Android_RKNN_API_V0.9.2_ ( 技术部, 图形显示平台中心 ) 文件状态 : 当前版本 : V0.9.2 [ ] 正在修改 [ ]"

Transcription

1 密级状态 : 绝密 ( ) 秘密 ( ) 内部 ( ) 公开 ( ) RK3399Pro_Linux&Android_RKNN_API_V0.9.2_ ( 技术部, 图形显示平台中心 ) 文件状态 : 当前版本 : V0.9.2 [ ] 正在修改 [ ] 正式发布 作者 : 杜坤明 完成日期 : 审核 : 卓鸿添 完成日期 : Fuzhou Rockchips Semiconductor Co., Ltd ( 版本所有, 翻版必究 )

2 更新记录 版本修改人修改日期修改说明核定人 V0.9.1 杜坤明 初始版本卓鸿添 V0.9.2 杜坤明 主要修改 input 和 output 的 API 定义卓鸿添 1

3 目录 1 主要功能说明 系统依赖说明 LINUX 平台依赖 ANDROID 平台依赖 API 使用说明 RKNN API 详细说明 rknn_init rknn_destroy rknn_query rknn_inputs_set rknn_run rknn_outputs_get rknn_outputs_release RKNN 数据结构定义 rknn_input_output_num rknn_tensor_attr rknn_input rknn_output rknn_perf_detail rknn_perf_run rknn_run_extend rknn_output_extend rknn_sdk_version rknn 返回值错误码

4 3.3 RKNN API 基本调用流程 LINUX DEMO 编译说明 运行说明 ANDROID DEMO 编译说明 运行说明

5 1 主要功能说明 本 API SDK 为基于 RK3399Pro Linux/Android 的神经网络 NPU 硬件的一套加速方案, 可为采用 RKNN API 开发的 AI 相关应用提供通用加速支持 本文主要包含 3 个部分 : 1) RKNN API: RKNN API 详细的 API 定义和使用说明 2) Linux Demo: 编译出 Linux 平台上使用硬件加速的基于 MobileNet 的分类器 Demo 和基于 MobileNet-SSD 目标检测的 Demo 3) Android Demo: 编译出 Android 平台上使用硬件加速的基于 MobileNet-SSD 目标检测的 Demo 2 系统依赖说明 2.1 Linux 平台依赖 用 本 API SDK 基于 RK3399Pro 的 64 位 Linux 开发, 需要在 RK3399Pro 的 64 位 Linux 系统上使 2.2 Android 平台依赖 本 API SDK 基于 RK3399Pro 的 Android8.1 开发, 需要在 RK3399Pro 的 Android8.1 及 Android8.1 以上系统上使用 3 API 使用说明 RKNN API 是一套基于 RK3399Pro 的 NPU 硬件加速的应用编程接口 (API), 开发者可以使用该 API 开发相关的 AI 应用, 该 API 会自动调用 NPU 硬件加速器来进行加速 目前该 RKNN API 在 Linux 和 Android 平台下的接口是一致的 Linux 平台上,API SDK 提供了两个使用 RKNN API 的 Demo, 一个是基于 MobileNet 模型图像 4

6 分类器 Demo, 另一个是基于 MobileNet-SSD 模型的目标检测 Demo; Demo Android 平台上,API SDK 提供了一个使用 RKNN API 的基于 MobileNet-SSD 模型的目标检测 3.1 RKNN API 详细说明 RKNN API 为 Rockchips 为 RK3399Pro 的 NPU 硬件加速器设计的一套通用 API, 该 API 需要配合 Rockchips 提供的 RKNN 模型转换工具一起使用,RKNN 模型转换工具可以将常见的模型格式转换成 RKNN 模型, 例如 Tensorflow 的 pb 模型和 tflite 模型,caffe 的模型等 RKNN 模型转换工具的详细说明请参见 RKNN-Toolkit 使用指南 RKNN 模型转换工具可以输出文件后缀为.rknn 的模型文件, 如 mobilenet_v1-tf.rknn Linux 平台上, 进入 Linux/rknn_api_sdk 目录, RKNN API 的定义在 rknn_api_sdk/rknn_api/include/rknn_api.h 的头文件里 RKNN API 的动态库路径为 rknn_api_sdk/rknn_api/lib64/librknn_api.so 应用程序只需要包含该头文件和动态库, 就可以编写相关的 AI 应用 Android 平台上, 进入 Android/rknn_api 目录, RKNN API 的定义在 rknn_api/include/rknn_api.h 的头文件里 RKNN API 的动态库路径为 rknn_api/lib64/librknn_api.so 和 rknn_api/lib/librknn_api.so 应用程序只需要包含该头文件和动态库, 就可以编写相关的 AI 应用的 JNI 库 目前 Android 上只支持采用 JNI 的开发方式 下面的章节是 rknn api 的函数说明 5

7 3.1.1 rknn_init API 功能 参数 int rknn_init(rknn_context* context, void* model, uint32_t size, uint32_t flag) 创建 context 并加载 rknn 模型, 并根据 flag 执行特定的初始化行为 rknn_context* context: context 对象指针 用于返回创建的 context 对象 void* model: 指向 rknn 模型的指针 uint32_t size: rknn 模型的大小 uint32_t flag: 扩展 flag: RKNN_FLAG_PRIOR_HIGH: 创建高优先级的 Context RKNN_FLAG_PRIOR_MEDIUM: 创建中优先级的 Context RKNN_FLAG_PRIOR_LOW: 创建低优先级的 Context RKNN_FLAG_ASYNC_MASK: 打开异步模式 打开之后,rknn_outputs_get 将不会阻塞太久, 因为它直接返回的上一帧的推理结果 ( 第一帧的推理结果除外 ), 这将显著提高单线程模式下的推理帧率, 但代价是 rknn_outputs_get 返回的不是当前帧的推理结果 但当 rknn_run 和 rknn_outputs_get 不在同一个线程时, 则无需打开该异步模式 RKNN_FLAG_COLLECT_PERF_MASK : 打开性能收集调试开关 打开之后能够通过 rknn_query 接口查询网络每层运行时间 需要注意, 该标志被设置后, 因为需要同步每层的执行操作, 所以推理一帧的总耗时会比不使用 RKNN_FLAG_COLLECT_PERF_MASK 标志时更长 返回值 int 错误码 ( 见 rknn 返回值错误码 ) 示例代码如下 : rknn_context ctx; int ret = rknn_init(&ctx, model_data, model_data_size, 0); 6

8 3.1.2 rknn_destroy API 功能 参数 int rknn_destroy(rknn_context context) 卸载 rknn 模型并销毁 context 及其相关资源 rknn_context context: context 的对象 返回值 int 错误码 ( 见 rknn 返回值错误码 ) 示例代码如下 : int ret = rknn_destroy (ctx); rknn_query API int rknn_query(rknn_context context, rknn_query_cmd cmd, void* info, uint32_t size) 功能 参数 查询模型与 SDK 的相关信息 rknn_context context: context 的对象 rknn_query_cmd cmd: 查询命令 void* info: 存放返回结果的结构体变量 uint32_t size: info 对应的结构体变量的大小 返回值 int 错误码 ( 见 rknn 返回值错误码 ) 当前 SDK 支持的查询命令如下表所示 : 查询命令 返回结果结构体 功能 RKNN_QUERY_IN_OUT_NUM rknn_input_output_num 查询 input 和 output 的 Tensor 个数 RKNN_QUERY_INPUT_ATTR rknn_tensor_attr 查询 Input Tensor 属性 RKNN_QUERY_OUTPUT_ATTR rknn_tensor_attr RKNN_QUERY_PERF_DETAIL rknn_perf_detail 查询 Output Tensor 属性 查询网络各层运行时间 该查询需要在 rknn_init 的 flag 与 上 7

9 RKNN_FLAG_COLLECT_PERF_MASK, 否则获取 不到详细的各层性能信息 另外, RKNN_QUERY_PERF_DETAIL 查询返回的 rknn_perf_detail 结构体的 perf_data 成员不需要用户进行主动释放 同时该查询需要在 rknn_outputs_get 函数调用后才能返回正确的查询结果 RKNN_QUERY_PERF_RUN rknn_perf_run 查询单帧推理的硬件执行时间 同时该查询需要在 rknn_outputs_get 函数调用后才能返回正确的查询结果 RKNN_QUERY_SDK_VERSION rknn_sdk_version 查询 SDK 版本 接下来的小节将依次详解各个查询命令如何使用 查询 Input 和 Output 的 Tensor 个数 传入 RKNN_QUERY_IN_OUT_NUM 命令可以查询模型 Input 和 Output 的 Tensor 个数 其中需要 先创建 rknn_input_output_num 结构体对象 示例代码如下 : rknn_input_output_num io_num; ret = rknn_query(ctx, RKNN_QUERY_IN_OUT_NUM, &io_num, sizeof(io_num)); printf("model input num: %d, output num: %d\n", io_num.n_input, io_num.n_output); 查询 Input 的 Tensor 属性 传入 RKNN_QUERY_INPUT_ATTR 命令可以查询模型 Input 的 Tensor 的属性 其中需要先创建 rknn_tensor_attr 结构体对象 示例代码如下 : 8

10 rknn_tensor_attr input_attrs[io_num.n_input]; memset(input_attrs, 0, sizeof(input_attrs)); for (int i = 0; i < io_num.n_input; i++) { input_attrs[i].index = i; ret = rknn_query(ctx, RKNN_QUERY_INPUT_ATTR, &(input_attrs[i]), sizeof(rknn_tensor_attr)); } 查询 Output 的 Tensor 属性 传入 RKNN_QUERY_OUTPUT_ATTR 命令可以查询模型 Output 的 Tensor 的属性 其中需要先创建 rknn_tensor_attr 结构体对象 示例代码如下 : rknn_tensor_attr output_attrs[io_num.n_output]; memset(output_attrs, 0, sizeof(output_attrs)); for (int i = 0; i < io_num.n_output; i++) { output_attrs[i].index = i; ret = rknn_query(ctx, RKNN_QUERY_OUTPUT_ATTR, &(output_attrs[i]), sizeof(rknn_tensor_attr)); } 查询网络各层运行时间 如果在 rknn_init 函数调用时有设置 RKNN_FLAG_COLLECT_PERF_MASK 标志, 那么在执行 rknn_run 完成之后, 可以传入 RKNN_QUERY_PERF_DETAIL 命令来查询网络每层运行时间 其中需要先创建 rknn_perf_detail 结构体对象 另外,RKNN_QUERY_PERF_DETAIL 查询返回的 rknn_perf_detail 结构体的 perf_data 成员不需要用户进行主动释放 同时该查询需要在 rknn_outputs_get 函数调用后才能返回正确的查询结果 示例代码如下 : 9

11 rknn_perf_detail perf_detail; ret = rknn_query(ctx, RKNN_QUERY_PERF_DETAIL, &perf_detail, sizeof(rknn_perf_detail)); printf("%s", perf_detail.perf_data); 查询单帧推理的时间 传入 RKNN_QUERY_PERF_RUN 命令可以查询单帧推理的硬件执行时间 其中需要先创建 rknn_perf_run 结构体对象 同时该查询需要在 rknn_outputs_get 函数调用后才能返回正确的查询结果 示例代码如下 : rknn_perf_run perf_run; ret = rknn_query(ctx, RKNN_QUERY_PERF_RUN, &perf_run, sizeof(rknn_perf_run)); printf("%ld", perf_run.run_duration); 查询 SDK 版本 传入 RKNN_QUERY_SDK_VERSION 命令可以查询 RKNN API 以及 Driver 的版本 其中需要先 创建 rknn_sdk_version 结构体对象 示例代码如下 : rknn_sdk_version version; ret = rknn_query(ctx, RKNN_QUERY_SDK_VERSION, &version, sizeof(rknn_sdk_version)); printf("api version: %s\n", version.api_version); printf("driver version: %s\n", version.drv_version); rknn_inputs_set API int rknn_inputs_set(rknn_context context, uint32_t n_inputs, rknn_input inputs[]) 10

12 功能 设置 inputs 的 buffer 以及参数 Buffer 及参数需存储在 rknn_input 中 该函数能够支持多个 input, 其中每个 input 是 rknn_input 结构体对象, 在传入之前用户需要设置该对象 参数 rknn_context context: context 的对象 uint32_t n_inputs: inputs 的个数 rknn_input inputs[]: inputs 的数组指针, 数组每个元素是 rknn_input 结构体对象 返回值 int 错误码 ( 见 rknn 返回值错误码 ) 示例代码如下 : rknn_input inputs[1]; memset(inputs, 0, sizeof(inputs)); inputs[0].index = 0; inputs[0].type = RKNN_TENSOR_UINT8; inputs[0].size = img_width*img_height*img_channels; inputs[0].pass_through = FALSE; inputs[0].fmt = RKNN_TENSOR_NHWC; inputs[0].buf = in_data; ret = rknn_inputs_set(ctx, 1, inputs); 更详细的使用方法见 RKNN API 基本调用流程 章节的步骤 rknn_run API 功能 int rknn_run(rknn_context context, rknn_run_extend* extend) 执行一次模型推理, 调用之前需要先通过 rknn_inputs_set 函数设置 input 数据 该函数正常不会阻塞, 但是当有超过 3 次推理结果没有通过 rknn_outputs_get 获取时 则会阻塞, 直至 rknn_outputs_get 被调用 参数 rknn_context context:context 的对象 rknn_run_extend* extend: 扩展信息的指针, 用于设置或输出当前 rknn_run 对应的帧的信息, 如 frame_id( 详见 rknn_api.h 的 rknn_run_extend 定义 ) 如不用, 可赋 NULL 返回值 int 错误码 ( 见 rknn 返回值错误码 ) 示例代码如下 : 11

13 ret = rknn_run(ctx, NULL); rknn_outputs_get API int rknn_outputs_get(rknn_context context, uint32_t n_outputs, rknn_output outputs[], rknn_output_extend* extend) 功能 等待推理操作结束并获取 outputs 结果 该函数能够一次获取多个 output 数据 其中每个 output 是 rknn_output 结构体对象, 在函数调用之前需要依次创建并设置每个 rknn_output 对象 另外, 在推理结束前该函数会一直阻塞 ( 除非有异常出错 ) output 结果最后会被存至 outputs[] 数组 对于 output 数据的 buffer 存放可以采用两种方式 : 一种是用户自行申请和释放, 此时 rknn_output 对象的 is_prealloc 需要设置为 TRUE, 并且将 buf 指针指向用户申请的 buffer; 另一种是由 rknn 来进行分配, 此时 rknn_output 对象的 is_prealloc 设置为 FALSE 即可, 函数执行之后 buf 将指向 output 数据 参数 rknn_context context: context 的对象 uint32_t n_outputs: outputs 数组的个数, 该个数要与 rknn 模型的 output 个数一致 (rknn 模型的 output 个数可以通过 rknn_query 查询得到 ) rknn_output outputs[]: output 数据的数组, 其中数组每个元素为 rknn_output 结构体对象, 代表模型的一个 output rknn_output_extend* extend: 扩展信息的指针, 用于输出当前 output 对应的帧的信息, 如 frame_id( 详见 rknn_api.h 的 rknn_output_extend 定义 ) 如不用, 可赋 NULL 返回值 int 错误码 ( 见 rknn 返回值错误码 ) 示例代码如下 : 12

14 rknn_output outputs[io_num.n_output]; memset(outputs, 0, sizeof(outputs)); for (int i = 0; i < io_num.n_output; i++) { outputs[i].want_float = TRUE; outputs[i].is_prealloc = FALSE; } ret = rknn_outputs_get(ctx, io_num.n_output, outputs, NULL); 更详细的使用方法见 RKNN API 基本调用流程 章节的步骤 rknn_outputs_release API int rknn_outputs_release(rknn_context context, uint32_t n_ouputs, rknn_output outputs[]) 功能释放由 rknn_outputs_get 获取的 outputs 在 outputs 不再使用时需要调用该函数进行 outputs 的释放 ( 不管 rknn_output[x].is_prealloc 是 TRUE 还是 FALSE 都需要调用该函数进行最终的释放 ) 该函数被调用后, 当 rknn_output[x].is_prealloc = FALSE 时, 由 rknn_outputs_get 获取的 rknn_output[x].buf 地址也会被自动释放 ; 当 rknn_output[x].is_prealloc = ture 时,rknn_output[x].buf 则需要用户自己主动释放 参数 rknn_context context: context 的对象 uint32_t n_outputs: outputs 数组的个数, 该个数要与 rknn 模型的 output 个数一致 (rknn 模型的 output 个数可以通过 rknn_query 查询得到 ) rknn_output outputs[]: outputs 的数组指针返回值 int 错误码 ( 见 rknn 返回值错误码 ) 示例代码如下 ret = rknn_outputs_release(ctx, io_num.n_output, outputs); 13

15 3.2 RKNN 数据结构定义 rknn_input_output_num 结构体 rknn_input_output_num 表示 input 和 output 的 Tensor 个数, 其结构体成员变量 如下表所示 : 成员变量 数据类型 含义 n_input uint32_t Input Tensor 个数 n_output uint32_t Output Tensor 个数 rknn_tensor_attr 结构体 rknn_tensor_attr 表示模型的 Tensor 的属性, 结构体的定义如下表所示 : 成员变量 数据类型 含义 index uint32_t 表示 input 或 output 的 Tensor 的索引 当使用 rknn_query 查询前, 该 index 需要进行设置 n_dims uint32_t Tensor 维度个数 dims uint32_t[] Tensor 各维度值 name char[] Tensor 名称 n_elems uint32_t Tensor 数据元素个数 size uint32_t Tensor 数据所占内存大小 fmt rknn_tensor_format Tensor 维度的格式, 有以下格式 : RKNN_TENSOR_NCHW RKNN_TENSOR_NHWC type rknn_tensor_type Tensor 数据类型, 有以下数据类型 : RKNN_TENSOR_FLOAT32 RKNN_TENSOR_FLOAT16 14

16 RKNN_TENSOR_INT8 RKNN_TENSOR_UINT8 RKNN_TENSOR_INT16 qnt_type rknn_tensor_qnt_type Tensor 量化类型, 有以下的量化类型 : RKNN_TENSOR_QNT_NONE: 未量化 ; RKNN_TENSOR_QNT_DFP: 动态定点法量化 ; RKNN_TENSOR_QNT_AFFINE_ASYMMETRIC : 非对称量化 fl int8_t RKNN_TENSOR_QNT_DFP 量化类型的参数 zp uint32_t RKNN_TENSOR_QNT_AFFINE_ASYMMETRIC 量化类型的参数 scale float RKNN_TENSOR_QNT_AFFINE_ASYMMETRIC 量化类型的参数 rknn_input 结构体 rknn_input 表示模型的一个数据 input, 用来作为参数传入给 rknn_inputs_set 函数 结构体的定义如下表所示 : 成员变量 数据类型 含义 index uint32_t 该 input 的索引 buf void* input 数据 Buffer 的指针 size uint32_t input 数据 Buffer 所占内存大小 pass_through uint8_t input 数据直通模式 TRUE:input 数据不做任何转换直接传至 rknn 模型的 input 节点, 因此下面的 type 和 fmt 不需要进行设置 FALSE:input 数据会根据下面的 type 和 fmt 15

17 转换成跟模型的 input 节点一致的数据, 因此下 面的 type 和 fmt 需要进行设置 type rknn_tensor_type input 数据的类型 fmt rknn_tensor_format input 数据的格式 rknn_output 结构体 rknn_output 表示模型的一个数据 output, 用来作为参数传入给 rknn_outputs_get 函数 结构体的定义如下表所示 : 成员变量 数据类型 含义 want_float uint8_t 标识是否需要将 output 数据转为 float 类型的 output is_prealloc uint8_t 标识存放 output 数据的 Buffer 是否是预分配 index uint32_t 该 output 的索引 buf void* output 数据 Buffer 的指针 size uint32_t output 数据 Buffer 所占内存大小 is_prealloc 为 FALSE 时, 在 rknn_outputs_ge 函数执行后, 结构体对象的 index/buf/size 成员将会被赋值, 因此这三个成员变量不需要预先赋值 is_prealloc 为 TRUE 时, 结构体对象的 index/buf/size 需要预先被赋值, 否则 rknn_outputs_get 函数调用会失败并报错 rknn_perf_detail 结构体 rknn_perf_detail 表示模型的性能详情, 结构体的定义如下表所示 : 成员变量 数据类型 含义 perf_data char* 性能详情包含网络每层运行时间, 能够直接打印出来查看 data_len uint64_t 存放性能详情的字符串数组的长度 16

18 3.2.6 rknn_perf_run 结构体 rknn_perf_run 表示模型的单次推理的执行时间, 结构体的定义如下表所示 : 成员变量数据类型含义 run_duration int64_t 模型的单次推理的硬件执行时间 rknn_run_extend 结构体 rknn_run_extend 表示 rknn_run 的扩展信息, 用来作为参数传入给 rknn_run 函数, 结构体的定义如下表所示 : 成员变量 数据类型 含义 frame_id uint64_t 返回参数, 表示当前 run 的帧 id 该 id 与 rknn_output_extend.frame_id 一一对应, 在 rknn_run 和 rknn_outputs_get 处于不同线程的情况下, 可以用来确定帧的对应关系 rknn_output_extend 结构体 rknn_output_extend 表示 rknn_outputs_get 的扩展信息, 用来作为参数传入给 rknn_outputs_get 函数, 结构体的定义如下表所示 : 成员变量 数据类型 含义 frame_id uint64_t 返回参数, 表示当前 output 的帧 id 该 id 与 rknn_run_extend.frame_id 一一对应, 在 rknn_run 和 rknn_outputs_get 处于不同线程的 情况下, 可以用来确定帧的对应关系 rknn_sdk_version 结构体 rknn_sdk_version 用来表示 RKNN SDK 的版本信息, 结构体的定义如下 : 17

19 成员变量数据类型含义 api_version char[] rknn api 的版本信息 drv_version char[] rknn api 所基于的驱动版本信息 rknn 返回值错误码 RKNN API 函数的返回值错误码定义如下表所示 错误码 错误详情 RKNN_SUCC RKNN_ERR_FAIL RKNN_ERR_TIMEOUT RKNN_ERR_DEVICE_UNAVAILABLE RKNN_ERR_MALLOC_FAIL RKNN_ERR_PARAM_INVALID RKNN_ERR_MODEL_INVALID RKNN_ERR_CTX_INVALID RKNN_ERR_INPUT_INVALID RKNN_ERR_OUTPUT_INVALID RKNN_ERR_DEVICE_UNMATCH 执行成功执行出错执行超时 NPU 设备不可用内存分配失败传入参数错误传入的 RKNN 模型无效传入的 rknn_context 无效传入的 rknn_input 对象无效传入的 rknn_output 对象无效版本不匹配 3.3 RKNN API 基本调用流程 1) 读取 rknn 模型文件到内存, 这边的 rknn 模型文件就是用前面介绍的 RKNN 模型转换工具 生成的文件后缀为.rknn 的模型文件, 如 mobilenet_v1-tf.rknn 2) 调用 rknn_init 初始化 context 并加载 rknn 的模型 代码如下 : 18

20 rknn_context ctx = 0; ret = rknn_init(&ctx, model, model_len, RKNN_FLAG_PRIOR_MEDIUM); if(ret < 0) { printf("rknn_init fail! ret=%d\n", ret); goto Error; } 其中,ctx 为 context 对象 ;model 为 rknn 模型在内存里的指针 ;model_len 为模型大小 ; RKNN_FLAG_PRIOR_MEDIUM 为优先级标志位 ( 其他标志位详见 rknn_api.h 的 RKNN_FLAG_XXX ) 3) rknn 模型的 input/output 属性可能已经和原始模型 (pb 或 caffe) 不同, 因此需要通过 rknn_query 这个 api 获取 input 和 output 的属性, 如下 : rknn_input_output_num io_num; ret = rknn_query(ctx, RKNN_QUERY_IN_OUT_NUM, &io_num, sizeof(io_num)); if(ret < 0) { printf("rknn_query fail! ret=%d\n",ret); goto Error; } 上述接口用于获取 input/output 的个数, 个数会存储在 output_num.n_input 和 output_num.n_output 里 接下来获取 output 的属性 : rknn_tensor_attr output0_attr; output0_attr.index = 0; ret = rknn_query(ctx, RKNN_QUERY_OUTPUT_ATTR, &output0_attr, sizeof(output0_attr)); if(ret < 0) { printf("rknn_query fail! ret=%d\n",ret); goto Error; } 上述接口用于获取某个 output 的属性, 记得填写 rknn_tensor_attr 的 index( 该 index 不能大于等于前面获取的 output 的个数 ) ( 属性定义详见 rknn_tensor_attr) 获取某个 input 的属性方法与获取 output 属性方法类似 19

21 4) 根据 rknn 模型的 input 参数和 input 数据的具体格式, 调用 rknn_input_set 对 inputs 进行设置 代码如下 : rknn_input inputs[1]; inputs[0].index = input_index; inputs[0].buf = img.data; inputs[0].size = img_width * img_height * img_channels; inputs[0].pass_through = FALSE; inputs[0].type = RKNN_TENSOR_UINT8; inputs[0].fmt = RKNN_TENSOR_NHWC; ret = rknn_inputs_set(ctx, 1, inputs); if(ret < 0) { printf("rknn_input_set fail! ret=%d\n", ret); goto Error; } 首先, 先创建 rknn_input 数组 ( 这边假设只有一个 input, 因此数组大小设为 1), 然后填充数组的每个数组项的每个成员 其中 : inputs[0].index 为 rknn 模型的 input node 的索引 inputs[0].buf 为 cpu 可以访问的 buffer 指针, 一般是指向由 Camera 产生的图像数据, 如 RGB888 的数据 inputs[0].size 为 buffer 的大小 inputs[0].pass_through 为 input 数据直通模式选择 TRUE: 如果用户传入的 input 数据的属性 ( 主要是 type 和 fmt 以及量化参数 ) 和通过 rknn_query 查询得到的 input 属性一致, 则可以将该变量设为 TRUE, 同时下面的 type 和 fmt 无需进行设置 在这种模式下,rknn_inputs_set 会将用户传入的 input 数据直接传至 rknn 模型的 input 节点 这种模式用于用户已知 rknn 模型的 input 属性, 并且已经将原始输入数据自行转为与 rknn 模型 input 一致的数据 FALSE: 如果用户传入的 input 数据的属性 ( 主要是 type 和 fmt 以及量化参数 ) 和通过 rknn_query 查询得到的 input 属性不一致, 则需要将该变量设为 FASLE, 20

22 同时下面的 type 和 fmt 也需要根据用户传入的 input 数据进行设置 在这种模式下,rknn_inputs_set 函数会自动进行类型 格式的转换以及量化的处理 注意, 目前这种模式下不支持用户传入使用动态定点量化 (DFP) 或非对称量化 (AFFINE ASYMMETRIC) 的 input 数据 inputs[0].type 为 buffer 的数据类型, 如果是 RGB888 的数据, 则为 RKNN_TENSOR_UINT8 inputs[0].fmt 为 buffer 的数据格式, 也就是 NHWC 或 NCHW, 一般 Cemara 获取的 数据格式为 RKNN_TENSOR_NHWC 5) 在 inputs 参数设置完毕后, 调用 rknn_run 触发推理的操作, 该函数正常情况下会立即返 回, 并不会阻塞 ( 但是当有超过 3 次推理的结果没有通过 rknn_outputs_get 获取时则会 阻塞, 直至 rknn_outputs_get 被调用 ) 代码如下 : ret = rknn_run(ctx, NULL); if(ret < 0) { printf("rknn_run fail! ret=%d\n", ret); goto Error; } 6) 执行完 rknn_run, 可以调用 rknn_outputs_get 等待推理完成, 该函数会阻塞直到推理完 成, 推理完成后可以获取推理的结果 代码如下 : rknn_output outputs[1]; outputs[0].want_float = TRUE; outputs[0].is_prealloc = FALSE; ret = rknn_outputs_get(ctx, 1, outputs, NULL); if(ret < 0) { printf("rknn_outputs_get fail! ret=%d\n", ret); goto Error; } 首先, 先创建 rknn_output 数组 ( 这边假设只有一个 output, 因此数组大小设为 1) rknn_output 结构体的前两个成员变量必须赋值, 分别是 outputs[0].want_float 和 outputs[0].is_prealloc 21

23 want_float: 由于 rknn 模型的 output 可能与转换前的原始模型的 output 不一致, 一般情况下,rknn 模型的 output 类型为 UINT8 或 FP16(rknn 模型的 output 具体属性可以通过 rknn_query 查询获得 ), 如果用户希望获得的是 FP32 的浮点 output 数据, 则可以将该变量置为 ture; 如果希望获得是 rknn 模型原始的 output 数据, 则置为 FALSE 即可 is_prealloc = FALSE: 如果用户没有预先分配各个 output 的 buffer, 可以将该预分配标志设为 FALSE, 剩下的 outputs[0] 结构体的其余成员变量则不需要赋值 函数返回后, 推理的结果会存储在 output[0] 结构体中, 其中 : outputs[0].index 为对应 output 的 node 索引 outputs[0].buf 为存放推理结果的 buf 指针 outputs[0].size 为推理结果的 size 大小 另外, 该 output[0] 推理结果的其他属性可以通过 rknn_query 查询得到 这边需要注意的是,outputs[0].buf 在 rknn_outputs_release 函数被调用时会自动释放, 因此不需要用户主动释放 is_prealloc = TRUE: 如果用户有预先分配 output 的 buffer, 则需要将预分配标志 outputs[0].is_prealloc 设为 TRUE, 同时 outputs[0] 结构体的其余成员变量也需要赋 值, 如下 : 22

24 rknn_output outputs[1]; outputs[0].want_float = TRUE; outputs[0].is_prealloc = TRUE; outputs[0].index = 0; outputs[0].buf = output0_buf; outputs[0].size = output0_attr.n_elems * sizeof(float); ret = rknn_outputs_get(ctx, 1, outputs, NULL); if(ret < 0) { printf("rknn_outputs_get fail! ret=%d\n", ret); goto Error; } 其中 : outputs[0].index 为对应 output 的 node 索引 用户需要指定获取的 output 的 index, 该 index 需小于 rknn 模型的 output 个数 (rknn 模型的 output 个数可由 rknn_query 查询得到 ) outputs[0].buf 为存放推理结果的 buf 指针 该 buf 需要用户提前创建好 outputs[0].size 为推理结果的 size 大小 也就是用户创建 buf 的 size 该 size 需要根据相应的 output 的属性以及 want_float 变量来计算 当 want_float 为 FALSE 时, 该 size 等于 output0_attr.size; 当 want_float 为 TRUE 时, 该 size 等于 output0_attr.n_elems*sizeof(float) (output0_attr 为通过 rknn_query 查询 index 为 0 的 output 属性 ) rknn_outputs_get 函数返回后, 相应 index 的推理结果会存储在用户创建的 output[0].buf 里, 由于该 buf 是用户创建的, 在不需要再使用时, 用户需主动释放以避免内存泄漏 7) 当由 rknn_outputs_get 获取的所有 outputs 不再需要使用之后, 需要调用 rknn_outputs_release 对该 outputs 进行释放, 否则会造成内存泄漏 代码如下 : rknn_outputs_release(ctx, 1, outputs); 该函数的传参方式与 rknn_outputs_get 类似 需要注意的是, 不管 rknn_outputs_get 传入的 rknn_output[x].is_prealloc 是 TRUE 23

25 还是 FALSE 都需要调用该函数对 output 进行最终的释放 8) 需要进行多次推理, 可跳回步骤 4 进行下一次推理 9) 程序需要退出时, 需要调用 rknn_destroy 卸载 rknn 模型并销毁 context 代码如下 : rknn_destroy(ctx); 更具体代码请参见 API SDK 的 Linux 目录下的 : rknn_api_sdk/rknn_mobilenet.cpp 和 rknn_api_sdk/rknn_ssd.cpp 或 Android 目录下的 : rk_ssd_demo/app/src/main/jni/ssd_image.cc 3.4 Linux Demo 编译说明 API SDK 的 Linux 目录下提供了两个使用 RKNN API 的 Demo, 一个是基于 MobileNet 模型 图像分类器 Demo, 另一个是基于 MobileNet-SSD 模型的目标检测 Demo 进入 Linux/rknn_api_sdk 目录, 这两个 Demo 的主源文件为 rknn_api_sdk/rknn_mobilenet.cpp 和 rknn_api_sdk/rknn_ssd.cpp, 具体编译方法如下 : 1) 安装交叉编译工具, 执行 : sudo apt install gcc-aarch64-linux-gnu sudo apt install g++-aarch64-linux-gnu 2) cd rknn_api_sdk; mkdir build; cd build; cmake.. 3) make make 结束后即可在 rknn_api_sdk/build/ 生成 rknn_mobilenet 和 rknn_ssd 两个可执行文件 24

26 注 : 目前该 Demo 只适用于 64 位的 RK3399Pro Linux 系统, 同时只提供 64 位的 rknn_api 库, 在 Ubuntu 位系统上验证通过 运行说明 rknn_mobilenet 和 rknn_ssd 的运行需要将相关依赖库拷贝至 /usr/lib64/ 下, 同时将相关资源文件拷贝至 /tmp 目录下, 具体步骤如下 : 1) 将 rknn_api_sdk/3rdparty/opencv/lib64 和 rknn_api_sdk/rknn_api/lib64 目录下的文件拷贝至 RK3399Pro 目标板的 /usr/lib64/ 目录下 2) 将 API SDK 的 Linux/tmp/ 目录下的资源文件拷贝至 RK3399Pro 目标板的 /tmp/ 目录下 3) 将上述 rknn_api_sdk/build 目录里编译生成的 rknn_mobilenet 和 rknn_ssd 也拷贝至 RK3399Pro 目标板的 /tmp/ 目录下 4) 进入 RK3399Pro 目标板的 /tmp 目录执行 :./rknn_mobilenet 执行成功后会有执行时间和检测结果的打印 进入 RK3399Pro 目标板的 /tmp 目录执行 :./rknn_ssd 执行成功后会有执行时间和检测结果的打印, 同时还会在 RK3399Pro 目标板的 /tmp 目录下生成包含检测结果的图像 out.jpg, 可以导出 out.jpg 查看检测结果 3.5 Android Demo 编译说明 API SDK 的 Android 目录下有一个 rknn_api 目录和一个 rk_ssd_demo 目录 如想直接使用 RKNN API 来开发自己的 JNI 库, 则 JNI 库可以直接包含 rknn_api 里的 25

27 include/rknn_api.h 和 lib64/librknn_api.so 来调用到 rknn_api Android/rk_ssd_demo 目录为使用 RKNN API 的基于 MobileNet-SSD 模型的目标检测 Demo 该 demo 完整的 ssd 目标检测 demo, 包含了 java 和 jni 的部分, 其中 jni 目录的路径为 : rk_ssd_demo/app/src/main/jni 该 jni 目录里已经包含了 rknn_api.h 头文件, 另外 librknn_api.so 的存放路径为 :rk_ssd_demo/app/src/main/jnilibs/arm64-v8a rk_ssd_demo 的具体编译方法如下 : 进入 rk_ssd_demo 目录, 运行 AndroidStudio 打开该目录的工程文件, 编译并生成 apk 即可 ( 需要 NDK 的支持, 在 android-ndk-r16b 上验证通过 ) 运行说明 直接在 RK3399Pro 的 Android 上运行该 apk 即可 26

RKNN-Toolkit ARM 平台快速上手指南 V1.1.0

RKNN-Toolkit ARM 平台快速上手指南 V1.1.0 RKNN-Toolkit ARM 平台快速上手指南 V1.1.0 目录 1 主要功能说明... 1 2 系统依赖说明... 2 3 ARM64 平台 (PYTHON3.5) 快速上手指南... 3 3.1 环境准备... 3 3.2 安装 RKNN-TOOLKIT... 3 3.3 运行安装包中附带的示例... 4 2 1 主要功能说明 RKNN-Toolkit 是为用户提供在 PC RK3399Pro

More information

エスポラージュ株式会社 住所 : 東京都江東区大島 東急ドエルアルス大島 HP: ******************* * 关于 Java 测试试题 ******

エスポラージュ株式会社 住所 : 東京都江東区大島 東急ドエルアルス大島 HP:  ******************* * 关于 Java 测试试题 ****** ******************* * 关于 Java 测试试题 ******************* 問 1 运行下面的程序, 选出一个正确的运行结果 public class Sample { public static void main(string[] args) { int[] test = { 1, 2, 3, 4, 5 ; for(int i = 1 ; i System.out.print(test[i]);

More information

PowerPoint 演示文稿

PowerPoint 演示文稿 The BitCoin Scripting Language 交易实例 交易结构 "result": { "txid": "921a dd24", "hash": "921a dd24", "version": 1, "size": 226, "locktime": 0, "vin": [ ], "vout": [ ], "blockhash": "0000000000000000002c510d

More information

C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 5 月 3 日 1

C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 5 月 3 日 1 C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 月 3 日 1 1 INPUTOUTPUT 1 InputOutput 题目描述 用 cin 输入你的姓名 ( 没有空格 ) 和年龄 ( 整数 ), 并用 cout 输出 输入输出符合以下范例 输入 master 999 输出 I am master, 999 years old. 注意 "," 后面有一个空格,"." 结束,

More information

帝国CMS下在PHP文件中调用数据库类执行SQL语句实例

帝国CMS下在PHP文件中调用数据库类执行SQL语句实例 帝国 CMS 下在 PHP 文件中调用数据库类执行 SQL 语句实例 这篇文章主要介绍了帝国 CMS 下在 PHP 文件中调用数据库类执行 SQL 语句实例, 本文还详细介绍了帝国 CMS 数据库类中的一些常用方法, 需要的朋友可以参考下 例 1: 连接 MYSQL 数据库例子 (a.php)

More information

SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 "odps-sdk" 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基

SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 odps-sdk 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基 开放数据处理服务 ODPS SDK SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 "odps-sdk" 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基础功能的主体接口, 搜索关键词 "odpssdk-core" 一些

More information

}; "P2VTKNvTAnYNwBrqXbgxRSFQs6FTEhNJ", " " string imagedata; if(0!= read_image("a.jpg",imagedata)) { return -1; } string rsp; ytopen_sdk m_sd

}; P2VTKNvTAnYNwBrqXbgxRSFQs6FTEhNJ,   string imagedata; if(0!= read_image(a.jpg,imagedata)) { return -1; } string rsp; ytopen_sdk m_sd tencentyun-youtu c++ sdk for 腾讯云智能优图服务 & 腾讯优图开放平台 安装 运行环境 Linux 依赖项 - curl-7.40.0, 获取更新版本 https://github.com/bagder/curl - openssl-1.0.1k, 获取更新版本 https://github.com/openssl/openssl 构建工程 工程采用 CMake 构建 1.

More information

Kubenetes 系列列公开课 2 每周四晚 8 点档 1. Kubernetes 初探 2. 上 手 Kubernetes 3. Kubernetes 的资源调度 4. Kubernetes 的运 行行时 5. Kubernetes 的 网络管理理 6. Kubernetes 的存储管理理 7.

Kubenetes 系列列公开课 2 每周四晚 8 点档 1. Kubernetes 初探 2. 上 手 Kubernetes 3. Kubernetes 的资源调度 4. Kubernetes 的运 行行时 5. Kubernetes 的 网络管理理 6. Kubernetes 的存储管理理 7. Kubernetes 包管理理 工具 Helm 蔺礼强 Kubenetes 系列列公开课 2 每周四晚 8 点档 1. Kubernetes 初探 2. 上 手 Kubernetes 3. Kubernetes 的资源调度 4. Kubernetes 的运 行行时 5. Kubernetes 的 网络管理理 6. Kubernetes 的存储管理理 7. Kubernetes

More information

获取 Access Token access_token 是接口的全局唯一票据, 接入方调用各接口时都需使用 access_token 开发者需要进行妥善保存 access_token 的存储至少要保留 512 个字符空间 access_token 的有效期目前为 2 个小时, 需定时刷新, 重复

获取 Access Token access_token 是接口的全局唯一票据, 接入方调用各接口时都需使用 access_token 开发者需要进行妥善保存 access_token 的存储至少要保留 512 个字符空间 access_token 的有效期目前为 2 个小时, 需定时刷新, 重复 获取 Access Token access_token 是接口的全局唯一票据, 接入方调用各接口时都需使用 access_token 开发者需要进行妥善保存 access_token 的存储至少要保留 512 个字符空间 access_token 的有效期目前为 2 个小时, 需定时刷新, 重复 获取将导致上次获取的 access_token 失效 接入方可以使用 AppID 和 AppSecret

More information

六域链联盟 SDChain-Matrix 节点搭建指南 2018/07/26 Version : 1.0.0

六域链联盟 SDChain-Matrix 节点搭建指南 2018/07/26 Version : 1.0.0 SDChain-Matrix 节点搭建指南 目录 1 环境要求... 3 2 软件下载... 4 3 安装部署... 4 3.1 部署可执行程序目录... 4 3.2 部署配置文件目录... 4 3.3 部署数据库文件目录... 4 3.4 部署日志文件目录... 4 3.5 部署依赖库文件目录... 4 4 配置参数... 5 5 启动运行... 7 5.1 普通模式启动... 7 5.2 加载启动模式...

More information

Microsoft Word - 把时间当作朋友(2011第3版)3.0.b.06.doc

Microsoft Word - 把时间当作朋友(2011第3版)3.0.b.06.doc 2 5 8 11 0 13 1. 13 2. 15 3. 18 1 23 1. 23 2. 26 3. 28 2 36 1. 36 2. 39 3. 42 4. 44 5. 49 6. 51 3 57 1. 57 2. 60 3. 64 4. 66 5. 70 6. 75 7. 83 8. 85 9. 88 10. 98 11. 103 12. 108 13. 112 4 115 1. 115 2.

More information

CC213

CC213 : (Ken-Yi Lee), E-mail: feis.tw@gmail.com 49 [P.51] C/C++ [P.52] [P.53] [P.55] (int) [P.57] (float/double) [P.58] printf scanf [P.59] [P.61] ( / ) [P.62] (char) [P.65] : +-*/% [P.67] : = [P.68] : ,

More information

文档

文档 Tengine 用户使用手册 2018-11-04 变更记录 日期版本说明作者 2018-10-10 0.1.0 初版 Cheng Meng 2018-11-04 0.1.1 修改拼写路明 1 / 14 目录 1 目的... 错误! 未定义书签 2 支持范围...3 2.1 硬件支持...3 2.2 OS 支持...4 3 产品构成...4 4...4 4.1 类型说明...4 4.2...4 4.2.1

More information

C 1

C 1 C homepage: xpzhangme 2018 5 30 C 1 C min(x, y) double C // min c # include # include double min ( double x, double y); int main ( int argc, char * argv []) { double x, y; if( argc!=

More information

chap07.key

chap07.key #include void two(); void three(); int main() printf("i'm in main.\n"); two(); return 0; void two() printf("i'm in two.\n"); three(); void three() printf("i'm in three.\n"); void, int 标识符逗号分隔,

More information

停止混流接口 请注意 : 该功能需要联系 ZEGO 技术支持开通 1 接口调用说明 http 请求方式 : POST/FORM, 需使用 https 正式环境地址 access_token=access_token (http

停止混流接口 请注意 : 该功能需要联系 ZEGO 技术支持开通 1 接口调用说明 http 请求方式 : POST/FORM, 需使用 https 正式环境地址   access_token=access_token (http 停止混流接口 请注意 : 该功能需要联系 ZEGO 技术支持开通 1 接口调用说明 http 请求方式 : POST/FORM, 需使用 https 正式环境地址 https://webapi.zego.im/cgi/stop-mix? access_token=access_token (https://webapi.zego.im/cgi/stop-mix? access_token=access_token)

More information

C/C++ - 文件IO

C/C++ - 文件IO C/C++ IO Table of contents 1. 2. 3. 4. 1 C ASCII ASCII ASCII 2 10000 00100111 00010000 31H, 30H, 30H, 30H, 30H 1, 0, 0, 0, 0 ASCII 3 4 5 UNIX ANSI C 5 FILE FILE 6 stdio.h typedef struct { int level ;

More information

OOP with Java 通知 Project 2 提交时间 : 3 月 14 日晚 9 点 另一名助教 : 王桢 学习使用文本编辑器 学习使用 cmd: Power shell 阅读参考资料

OOP with Java 通知 Project 2 提交时间 : 3 月 14 日晚 9 点 另一名助教 : 王桢   学习使用文本编辑器 学习使用 cmd: Power shell 阅读参考资料 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 2 提交时间 : 3 月 14 日晚 9 点 另一名助教 : 王桢 Email: 51141201063@ecnu.cn 学习使用文本编辑器 学习使用 cmd: Power shell 阅读参考资料 OOP with Java Java 类型 引用 不可变类型 对象存储位置 作用域 OOP

More information

技 术 文 件

技  术  文  件 技术文件 技术文件名称 :IAlert 接口使用说明 技术文件编号 : 版 本 :V1.0 共页 ( 包括封面 ) 拟制 审核 会签 标准化 批准 中兴通讯股份有限公司 XX 软件模块详细设计说明 版本号 修改记录 文件编号 版本号 拟制人 / 修改人 拟制 / 修改日期 1 V1.0 胡曦 2005-08-12 新建 更改理由 主要更改内容 ( 写要点即可 ) 注 1: 每次更改归档文件 ( 指归档到事业部或公司档案室的文件

More information

手册 doc

手册 doc 1. 2. 3. 3.1 3.2 3.3 SD 3.4 3.5 SD 3.6 3.7 4. 4.1 4.2 4.3 SD 4.4 5. 5.1 5.2 5.3 SD 6. 1. 1~3 ( ) 320x240~704x288 66 (2G SD 320x2401FPS ) 32M~2G SD SD SD SD 24V DC 3W( ) -10~70 10~90% 154x44x144mm 2. DVR106

More information

1. 软 件 核 武 器 CTreeNode 基 本 原 理 以 下 详 细 介 绍 这 一 技 术 的 基 本 原 理 -CTreeNode 这 是 一 种 数 据 结 构, 类 似 于 CObject 存 在 于 内 存 中 1. 能 够 以 树 形 的 方 式 嵌 套 存 贮 非 常 复 杂

1. 软 件 核 武 器 CTreeNode 基 本 原 理 以 下 详 细 介 绍 这 一 技 术 的 基 本 原 理 -CTreeNode 这 是 一 种 数 据 结 构, 类 似 于 CObject 存 在 于 内 存 中 1. 能 够 以 树 形 的 方 式 嵌 套 存 贮 非 常 复 杂 目 录 1. 软 件 核 武 器 CTreeNode 基 本 原 理... 2 2. 软 件 核 武 器 CTreeNode 的 重 要 意 义... 3 3. CTreeNode 1 个 月 内 能 实 现 的 应 用 场 景... 4 4. 常 见 质 疑 :... 4 1) 质 疑 1- 相 对 Socket 有 何 优 势... 4 2) 质 疑 2- 相 对 XML_Thrift,CTreeNode

More information

目录 1 IPv6 快速转发 IPv6 快速转发配置命令 display ipv6 fast-forwarding aging-time display ipv6 fast-forwarding cache ipv6 fas

目录 1 IPv6 快速转发 IPv6 快速转发配置命令 display ipv6 fast-forwarding aging-time display ipv6 fast-forwarding cache ipv6 fas 目录 1 IPv6 快速转发 1-1 1.1 IPv6 快速转发配置命令 1-1 1.1.1 display ipv6 fast-forwarding aging-time 1-1 1.1.2 display ipv6 fast-forwarding cache 1-1 1.1.3 ipv6 fast-forwarding aging-time 1-3 1.1.4 ipv6 fast-forwarding

More information

38 47995529 威 福 髮 藝 店 桃 園 市 蘆 竹 區 中 山 里 福 祿 一 街 48 號 地 下 一 樓 50,000 獨 資 李 依 純 105/04/06 府 經 登 字 第 1059003070 號 39 47995534 宏 品 餐 飲 桃 園 市 桃 園 區 信 光 里 民

38 47995529 威 福 髮 藝 店 桃 園 市 蘆 竹 區 中 山 里 福 祿 一 街 48 號 地 下 一 樓 50,000 獨 資 李 依 純 105/04/06 府 經 登 字 第 1059003070 號 39 47995534 宏 品 餐 飲 桃 園 市 桃 園 區 信 光 里 民 1 08414159 惠 鴻 眼 鏡 行 桃 園 市 中 壢 區 福 德 里 中 華 路 一 段 186 號 1 樓 30,000 獨 資 宋 耀 鴻 105/04/27 府 經 登 字 第 1059003866 號 2 17891110 承 元 冷 氣 空 調 工 程 行 桃 園 市 桃 園 區 中 德 里 國 際 路 1 段 98 巷 50 號 2 樓 之 4 200,000 獨 資 詹 安 平

More information

概述

概述 OPC Version 1.8 build 0925 KOCRDK Knight OPC Client Rapid Development Toolkits Knight Workgroup, eehoo Technology 2002-9 OPC 1...4 2 API...5 2.1...5 2.2...5 2.2.1 KOC_Init...5 2.2.2 KOC_Uninit...5 2.3...5

More information

第一章

第一章 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1500 1450 1400 1350 1300 1250 1200 15 16 17 18 19 20 21 22 23 24 25 26 27 28 INPUT2006 29 30 31 32 33 34 35 9000 8500 8000 7500 7000 6500 6000 5500 5000 4500 4000 3500

More information

C/C++语言 - C/C++数据

C/C++语言 - C/C++数据 C/C++ C/C++ Table of contents 1. 2. 3. 4. char 5. 1 C = 5 (F 32). 9 F C 2 1 // fal2cel. c: Convert Fah temperature to Cel temperature 2 # include < stdio.h> 3 int main ( void ) 4 { 5 float fah, cel ;

More information

Ioncube Php Encoder 8 3 Crack 4. llamaba octobre traslado General Search colony

Ioncube Php Encoder 8 3 Crack 4. llamaba octobre traslado General Search colony Ioncube Php Encoder 8 3 Crack 4 ->>->>->> DOWNLOAD 1 / 5 2 / 5 Press..the..General..Tools..category4Encrypt..and..protect..files..with..PHP..encoding,..encryption,..ob fuscation..and..licensing... 2016

More information

考 試 日 期 :2016/04/24 教 室 名 稱 :602 電 腦 教 室 考 試 時 間 :09:50 25 26 27 28 29 30 31 32 33 34 35 36 二 技 企 管 一 胡 宗 兒 中 文 輸 入 四 技 企 四 甲 林 姿 瑄 中 文 輸 入 二 技 企 管 一

考 試 日 期 :2016/04/24 教 室 名 稱 :602 電 腦 教 室 考 試 時 間 :09:50 25 26 27 28 29 30 31 32 33 34 35 36 二 技 企 管 一 胡 宗 兒 中 文 輸 入 四 技 企 四 甲 林 姿 瑄 中 文 輸 入 二 技 企 管 一 考 試 日 期 :2016/04/24 教 室 名 稱 :602 電 腦 教 室 考 試 時 間 :09:50 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 五 專 企 二 乙 胡 哲 維 中 文 輸 入 五 專 企 二 乙 周 林 昜 中 文 輸 入 五 專 企 二 乙 賴 昱 樺 中 文 輸 入 五 專 企 二 乙

More information

吉林大学学报 工学版 244 第 4 卷 复杂 鉴于本文篇幅所限 具体公式可详见参考文 献 7 每帧的动力学方程建立及其解算方法如图 3 所示 图4 滚转角速度与输入量 η 随时间的变化波形 Fig 4 Waveform of roll rate and input η with time changing 图5 Fig 5 滚转角随时间的变化波形 Waveform of roll angle with

More information

Guava学习之Resources

Guava学习之Resources Resources 提供提供操作 classpath 路径下所有资源的方法 除非另有说明, 否则类中所有方法的参数都不能为 null 虽然有些方法的参数是 URL 类型的, 但是这些方法实现通常不是以 HTTP 完成的 ; 同时这些资源也非 classpath 路径下的 下面两个函数都是根据资源的名称得到其绝对路径, 从函数里面可以看出,Resources 类中的 getresource 函数都是基于

More information

ESP-Jumpstart

ESP-Jumpstart 2016-2019 2019 08 08 Contents 1 3 1.1 ESP32.............................. 3 1.2.................................................. 5 2 7 2.1............................................. 7 2.2 ESP-IDF............................................

More information

OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数

OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数 复习 类的复用 组合 (composition): has-a 关系 class MyType { public int i; public double d; public char c; public void set(double

More information

3.1 num = 3 ch = 'C' 2

3.1 num = 3 ch = 'C' 2 Java 1 3.1 num = 3 ch = 'C' 2 final 3.1 final : final final double PI=3.1415926; 3 3.2 4 int 3.2 (long int) (int) (short int) (byte) short sum; // sum 5 3.2 Java int long num=32967359818l; C:\java\app3_2.java:6:

More information

新美大酒店开放平台SDK(.NET版)使用说明.pages

新美大酒店开放平台SDK(.NET版)使用说明.pages SDK(.NET 版 ) 使 用说明 1 SDK 包说明 1.1 获取 SDK SDK 可以在数据平台下载, 也可直接通过下载地址获得 下载地址 : http://s3.meituan.net/v1/mss_de81c933e113413ea913a772b707b9c9/open-platform-sdk/mthotelopenplatform-sdk-1.0-net.zip 下载成功后, 解压后可获得

More information

fvalue = (pdata[y][i] + pdata[y][i + 1]) / 2; pdata[y][nhalfw + i] -= fvalue; fvalue = (pdata[y][nhalfw - 1] + pdata[y][nhalfw - 2]) / 2; pdata[y][nwi

fvalue = (pdata[y][i] + pdata[y][i + 1]) / 2; pdata[y][nhalfw + i] -= fvalue; fvalue = (pdata[y][nhalfw - 1] + pdata[y][nhalfw - 2]) / 2; pdata[y][nwi #include #include #include // 二维离散小波变换 ( 单通道浮点图像 ) void DWT(IplImage *pimage, int nlayer) // 执行条件 if (pimage) if (pimage->nchannels == 1 && pimage->depth == IPL_DEPTH_32F

More information

目录 1. RK 支持的编解码类型 头文件与库文件 结构体介绍 编解码枚举定义 编解码结构体定义 解码调用流程 解码创建过程 解码过程 解码销毁过程

目录 1. RK 支持的编解码类型 头文件与库文件 结构体介绍 编解码枚举定义 编解码结构体定义 解码调用流程 解码创建过程 解码过程 解码销毁过程 vpu_api.h 接口说明文档 1 目录 1. RK 支持的编解码类型... 3 2. 头文件与库文件... 3 3. 结构体介绍... 3 3.1 编解码枚举定义... 3 3.2 编解码结构体定义... 5 4. 解码调用流程... 8 4.1 解码创建过程... 8 4.2 解码过程... 9 4.3 解码销毁过程... 9 5. 编码调用流程...10 5.1 编码创建过程...10 5.2

More information

(Load Project) (Save Project) (OffLine Mode) (Help) Intel Hex Motor

(Load Project) (Save Project) (OffLine Mode) (Help) Intel Hex Motor 1 4.1.1.1 (Load) 14 1.1 1 4.1.1.2 (Save) 14 1.1.1 1 4.1.2 (Buffer) 16 1.1.2 1 4.1.3 (Device) 16 1.1.3 1 4.1.3.1 (Select Device) 16 2 4.1.3.2 (Device Info) 16 2.1 2 4.1.3.3 (Adapter) 17 2.1.1 CD-ROM 2 4.1.4

More information

Microsoft Word - 第3章.doc

Microsoft Word - 第3章.doc Java C++ Pascal C# C# if if if for while do while foreach while do while C# 3.1.1 ; 3-1 ischeck Test() While ischeck while static bool ischeck = true; public static void Test() while (ischeck) ; ischeck

More information

无类继承.key

无类继承.key 无类继承 JavaScript 面向对象的根基 周爱 民 / aimingoo aiming@gmail.com https://aimingoo.github.io https://github.com/aimingoo rand = new Person("Rand McKinnon",... https://docs.oracle.com/cd/e19957-01/816-6408-10/object.htm#1193255

More information

ExcelUtility 类库使用说明 ( 续 ) 开发 / 设计 : 左文俊 第一个新增功能, 列宽自适应, 当超过 30 个字符则将单元格内容设为换行 任意一个无模板的导出方法均支持该功能, 示例代码如下 : /// <summary> /// 测试方法

ExcelUtility 类库使用说明 ( 续 ) 开发 / 设计 : 左文俊 第一个新增功能, 列宽自适应, 当超过 30 个字符则将单元格内容设为换行 任意一个无模板的导出方法均支持该功能, 示例代码如下 : /// <summary> /// 测试方法 ExcelUtility 类库使用说明 ( 续 ) 开发 / 设计 : 左文俊 第一个新增功能, 列宽自适应, 当超过 0 个字符则将单元格内容设为换行 任意一个无模板的导出方法均支持该功能, 示例代码如下 : 0 /// 测试方法 : 测试将 DataTable 导出到 EXCEL, 无模板 public void TestExportToExcelByDataTable() string excelpath

More information

Fun Time (1) What happens in memory? 1 i n t i ; 2 s h o r t j ; 3 double k ; 4 char c = a ; 5 i = 3; j = 2; 6 k = i j ; H.-T. Lin (NTU CSIE) Referenc

Fun Time (1) What happens in memory? 1 i n t i ; 2 s h o r t j ; 3 double k ; 4 char c = a ; 5 i = 3; j = 2; 6 k = i j ; H.-T. Lin (NTU CSIE) Referenc References (Section 5.2) Hsuan-Tien Lin Deptartment of CSIE, NTU OOP Class, March 15-16, 2010 H.-T. Lin (NTU CSIE) References OOP 03/15-16/2010 0 / 22 Fun Time (1) What happens in memory? 1 i n t i ; 2

More information

Microsoft Word zw

Microsoft Word zw 第 1 章 Android 概述 学习目标 : Android Android Android Studio Android Android APK 1.1 1. 智能手机的定义 Smartphone 2. 智能手机的发展 1973 4 3 PC IBM 1994 IBM Simon PDA PDA Zaurus OS 1996 Nokia 9000 Communicator Nokia 9000

More information

目录 1 IPv6 快速转发 IPv6 快速转发配置命令 display ipv6 fast-forwarding aging-time display ipv6 fast-forwarding cache ipv6 fas

目录 1 IPv6 快速转发 IPv6 快速转发配置命令 display ipv6 fast-forwarding aging-time display ipv6 fast-forwarding cache ipv6 fas 目录 1 IPv6 快速转发 1-1 1.1 IPv6 快速转发配置命令 1-1 1.1.1 display ipv6 fast-forwarding aging-time 1-1 1.1.2 display ipv6 fast-forwarding cache 1-1 1.1.3 ipv6 fast-forwarding aging-time 1-3 1.1.4 ipv6 fast-forwarding

More information

C/C++语言 - 运算符、表达式和语句

C/C++语言 - 运算符、表达式和语句 C/C++ Table of contents 1. 2. 3. 4. C C++ 5. 6. 7. 1 i // shoe1.c: # include # define ADJUST 7. 64 # define SCALE 0. 325 int main ( void ) { double shoe, foot ; shoe = 9. 0; foot = SCALE * shoe

More information

書本介紹

書本介紹 班 級 經 營 期 末 報 告 組 員 : 幼 三 甲 4A0I0030 蔡 依 璇 4A0I0048 蘇 家 儀 4A0I0096 張 容 嫣 4A0I0098 袁 少 潔 書 本 介 紹 閱 讀 對 象 : 小 學 低 年 級 的 老 師 新 生 家 長 有 意 從 事 小 學 者 及 關 心 教 育 品 質 的 社 會 人 士 內 容 : 1. 教 師 如 何 成 功 有 效 地 經 營 低

More information

C C

C C C C 2017 3 8 1. 2. 3. 4. char 5. 2/101 C 1. 3/101 C C = 5 (F 32). 9 F C 4/101 C 1 // fal2cel.c: Convert Fah temperature to Cel temperature 2 #include 3 int main(void) 4 { 5 float fah, cel; 6 printf("please

More information

RxJava

RxJava RxJava By 侦跃 & @hi 头 hi RxJava 扩展的观察者模式 处 观察者模式 Observable 发出事件 Subscriber 订阅事件 bus.post(new AnswerEvent(42)); @Subscribe public void onanswer(answerevent event) {! }! Observable observable = Observable.create(new

More information

团 学 要 闻 我 校 召 开 共 青 团 五 届 九 次 全 委 ( 扩 大 ) 会 议 3 月 17 日, 我 校 共 青 团 五 届 九 次 全 委 ( 扩 大 ) 会 议 在 行 政 办 公 楼 五 楼 会 议 室 举 行, 校 团 委 委 员 各 院 ( 系 ) 团 委 书 记 校 学 生

团 学 要 闻 我 校 召 开 共 青 团 五 届 九 次 全 委 ( 扩 大 ) 会 议 3 月 17 日, 我 校 共 青 团 五 届 九 次 全 委 ( 扩 大 ) 会 议 在 行 政 办 公 楼 五 楼 会 议 室 举 行, 校 团 委 委 员 各 院 ( 系 ) 团 委 书 记 校 学 生 共 青 团 工 作 简 报 2011 年 第 1 期 共 青 团 大 连 海 洋 大 学 委 员 会 团 学 要 闻 : 导 读 我 校 召 开 共 青 团 五 届 九 次 全 委 ( 扩 大 ) 会 议 我 校 在 大 连 市 大 学 生 创 新 创 意 作 品 大 赛 中 取 得 佳 绩 校 团 委 召 开 学 生 干 部 思 想 动 态 座 谈 会 校 团 委 组 织 开 展 弘 扬 雷 锋

More information

untitled

untitled 1 Outline 數 料 數 數 列 亂數 練 數 數 數 來 數 數 來 數 料 利 料 來 數 A-Z a-z _ () 不 數 0-9 數 不 數 SCHOOL School school 數 讀 school_name schoolname 易 不 C# my name 7_eleven B&Q new C# (1) public protected private params override

More information

untitled

untitled XP248 1 XP248 XP248 DCS PLC SCnet SCnet DCS SCnet DCS 1.1 XP248 Modbus HostLink Modbus XP248 4 DB25 XP248 MODBUS XP248 SCControl XP248 4 RS232 RS485 4 32 XP248 COM0-COM1 COM2-COM3 1200 19200bit/s 5 8 1

More information

RKNN-Toolkit 使用指南 V1.1.0

RKNN-Toolkit 使用指南 V1.1.0 RKNN-Toolkit 使用指南 V1.1.0 目录 1 主要功能说明... 1 2 系统依赖说明... 2 3 使用说明... 3 3.1 安装... 3 3.1.1 通过 pip install 命令安装... 3 3.1.2 通过 DOCKER 镜像安装... 4 3.2 RKNN-TOOLKIT 的使用... 5 3.2.1 场景一 : 模型运行在 PC 上... 5 3.2.2 场景二

More information

DVK530/531扩展板

DVK530/531扩展板 DVK720 扩展板 驱动移植手册 2014.04.03 V1.0 版权声明 本手册所有权由深圳市微雪电子有限公司独家持有 未经本公司的书 面许可, 不得以任何方式或形式进行修改 分发或复制本文档的任何 部分, 否则一切后果由违者自负 版本更新记录 版本日期说明 V1.0 2014.04.03 初始发布 深圳市微雪电子有限公司 www.waveshare.net I 目录 版权声明... I 版本更新记录...

More information

_banneradview.settest(true); _banneradview.setuserkeywords("swimming"); _banneradview.setusercategories("1,3,4"); _banneradview.setusergender(jdbanner

_banneradview.settest(true); _banneradview.setuserkeywords(swimming); _banneradview.setusercategories(1,3,4); _banneradview.setusergender(jdbanner 京东 APP 联盟 SDK Android 版接口说明文档 1.0 1. 嵌入 SDK 1.1 添加 SDK Android Studio 环境 : 菜单 New->New Module->Import.jar or.aar package, 然后选中 App 联盟 SDK 所带的 jar 文件 Eclipse+ADT 环境 : 将 App 联盟 SDK 所带的 jar 文件拷贝到 libs/ 目录下

More information

概述

概述 OPC Version 1.6 build 0910 KOSRDK Knight OPC Server Rapid Development Toolkits Knight Workgroup, eehoo Technology 2002-9 OPC 1...4 2 API...5 2.1...5 2.2...5 2.2.1 KOS_Init...5 2.2.2 KOS_InitB...5 2.2.3

More information

1. SDK 概述 Arcsoft Photo Styling SDK 可以将输入图像转化为具有指定风格的图像 图像风格主要是指色调 笔触 线条等图像的特异性表现形式 存储某一艺术图像风格模板的文件将按需要发布给 SDK 使用者 借助 SDK 和风格模板文件, 用户可以开发图像风格化等图像美化类应用

1. SDK 概述 Arcsoft Photo Styling SDK 可以将输入图像转化为具有指定风格的图像 图像风格主要是指色调 笔触 线条等图像的特异性表现形式 存储某一艺术图像风格模板的文件将按需要发布给 SDK 使用者 借助 SDK 和风格模板文件, 用户可以开发图像风格化等图像美化类应用 Arcsoft Photo Styling SDK 开发文档 目录 Arcsoft Photo Styling SDK 开发文档... 1 1. SDK 概述... 2 2. SDK 运行环境及相关指标... 2 2.1 运行环境... 2 2.2 运行指标... 3 3. API 说明... 3 3.1 函数... 3 APS_FSDK_Get_Version... 3 APS_FSDK_InitEngine...

More information

OOP with Java 通知 Project 4: 4 月 19 日晚 9 点

OOP with Java 通知 Project 4: 4 月 19 日晚 9 点 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 4: 4 月 19 日晚 9 点 复习 类的复用 组合 (composition): has-a 关系 class MyType { public int i; public double d; public char c; public void set(double x) { d

More information

提纲 1 2 OS Examples for 3

提纲 1 2 OS Examples for 3 第 4 章 Threads2( 线程 2) 中国科学技术大学计算机学院 October 28, 2009 提纲 1 2 OS Examples for 3 Outline 1 2 OS Examples for 3 Windows XP Threads I An Windows XP application runs as a seperate process, and each process may

More information

文档 1

文档 1 2005 3 100 2005 10 20 100 100 2003 9 30 266,303,262.93 100 941,105,695.50 532,672,384.52 1 2 100 100 100 90% 100 50% 100 100 2005 8 21 "75% 100 + 25% " 2005 8 22 100 95%+ 5% 3 75% + 25% 2005 7 1 2005 9

More information

胃癌早诊早治技术方案.doc

胃癌早诊早治技术方案.doc 2 3 4 5 6 7 40-69 2 CAG IM Dys Dys PG 3 PG 8 9 10 11 12 13 14 15 ID# 18 19 21 1 1 1 3 0 9 0 0 0 8 5 23 2 0 0 0 0 8 1 9 24 0 6 / 1 7 0 0 0 25 26 27 6.1 0 5 1 0 1 0 28 29 30 1 7 2 31 0 6 0 0 6 0 1 4 5

More information

《C语言程序设计》第2版教材习题参考答案

《C语言程序设计》第2版教材习题参考答案 教材 C 语言程序设计 ( 第 2 版 ) 清华大学出版社, 黄保和, 江弋编著 2011 年 10 月第二版 ISBN:978-7-302-26972-4 售价 :35 元 答案版本 本习题答案为 2012 年 2 月修订版本 一 选择题 1. 设已定义 int a, * p, 下列赋值表达式中正确的是 :C)p = &a A. *p = *a B. p = *a C.p = &a D. *p =

More information

由社會發展趨勢探討國人睡眠品質

由社會發展趨勢探討國人睡眠品質 1 2 3 1. 2. 1. 2. 3. 4. 2. 1. 2. 4 5 6 7683 7 3-2 8 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 9 4-1 10

More information

C++ 程序设计 实验 3 - 参考答案 MASTER 2017 年 5 月 21 日 1

C++ 程序设计 实验 3 - 参考答案 MASTER 2017 年 5 月 21 日 1 C++ 程序设计 实验 3 - 参考答案 MASTER 2017 年 5 月 21 日 1 1 圆 1 圆 设计圆类 包含 包含基本属性和基本属性访问接口 计算面积和周长接口 2 1 圆 1 #include 2 using namespace std ; 3 c l a s s CCircle 4 { 5 p r i v a t e : 6 double r ; 7 const

More information

寻医问药指南(十七)

寻医问药指南(十七) ... 1... 1... 49... 120... 131... 131... 146... 171... 180... 181... 181 I 518105 0755-7713177 0755-2425239 0755-2263882 1 0755-2409255 518102 0755-7799045 518002 0755-2220607 2 518101 0755-7788068 518101

More information

BOOL EnumWindows(WNDENUMPROC lparam); lpenumfunc, LPARAM (Native Interface) PowerBuilder PowerBuilder PBNI 2

BOOL EnumWindows(WNDENUMPROC lparam); lpenumfunc, LPARAM (Native Interface) PowerBuilder PowerBuilder PBNI 2 PowerBuilder 9 PowerBuilder Native Interface(PBNI) PowerBuilder 9 PowerBuilder C++ Java PowerBuilder 9 PBNI PowerBuilder Java C++ PowerBuilder NVO / PowerBuilder C/C++ PowerBuilder 9.0 PowerBuilder Native

More information

Microsoft PowerPoint - 4. 数组和字符串Arrays and Strings.ppt [兼容模式]

Microsoft PowerPoint - 4. 数组和字符串Arrays and Strings.ppt [兼容模式] Arrays and Strings 存储同类型的多个元素 Store multi elements of the same type 数组 (array) 存储固定数目的同类型元素 如整型数组存储的是一组整数, 字符数组存储的是一组字符 数组的大小称为数组的尺度 (dimension). 定义格式 : type arrayname[dimension]; 如声明 4 个元素的整型数组 :intarr[4];

More information

基于ECO的UML模型驱动的数据库应用开发1.doc

基于ECO的UML模型驱动的数据库应用开发1.doc ECO UML () Object RDBMS Mapping.Net Framework Java C# RAD DataSetOleDbConnection DataGrod RAD Client/Server RAD RAD DataReader["Spell"].ToString() AObj.XXX bug sql UML OR Mapping RAD Lazy load round trip

More information

目录 AZSC-2.0 DFace SDK 安装说明书 (v2.0.0) Linux amd64 系统安装 ARM Linux 系统安装 Windows 系统安装 Android 系统安装 ROS 系统安装.

目录 AZSC-2.0 DFace SDK 安装说明书 (v2.0.0) Linux amd64 系统安装 ARM Linux 系统安装 Windows 系统安装 Android 系统安装 ROS 系统安装. 目录 DFace SDK 安装说明书 (v2.0.0)... 2 1.0 Linux amd64 系统安装... 2 2.0 ARM Linux 系统安装... 7 3.0 Windows 系统安装...12 4.0 Android 系统安装... 19 5.0 ROS 系统安装...22 1 DFace SDK 安装说明书 (v2.0.0) 1.0 Linux amd64 系统安装 1.1 环境变量设置

More information

<4D6963726F736F667420506F776572506F696E74202D20332D322E432B2BC3E6CFF2B6D4CFF3B3CCD0F2C9E8BCC6A1AAD6D8D4D8A1A2BCCCB3D0A1A2B6E0CCACBACDBEDBBACF2E707074>

<4D6963726F736F667420506F776572506F696E74202D20332D322E432B2BC3E6CFF2B6D4CFF3B3CCD0F2C9E8BCC6A1AAD6D8D4D8A1A2BCCCB3D0A1A2B6E0CCACBACDBEDBBACF2E707074> 程 序 设 计 实 习 INFO130048 3-2.C++ 面 向 对 象 程 序 设 计 重 载 继 承 多 态 和 聚 合 复 旦 大 学 计 算 机 科 学 与 工 程 系 彭 鑫 pengxin@fudan.edu.cn 内 容 摘 要 方 法 重 载 类 的 继 承 对 象 引 用 和 拷 贝 构 造 函 数 虚 函 数 和 多 态 性 类 的 聚 集 复 旦 大 学 计 算 机 科 学

More information

itestin 能 干 什 么? itestin 是 云 测 (www.testin.cn) 提 供 给 广 大 移 动 应 用 测 试 者 或 者 开 发 者 免 费 使 用 的 一 款 安 卓 UI 自 动 化 测 试 录 制 工 具 ( 目 前 只 支 持 Android 应 用 程 序 的

itestin 能 干 什 么? itestin 是 云 测 (www.testin.cn) 提 供 给 广 大 移 动 应 用 测 试 者 或 者 开 发 者 免 费 使 用 的 一 款 安 卓 UI 自 动 化 测 试 录 制 工 具 ( 目 前 只 支 持 Android 应 用 程 序 的 itestin 快 速 入 门 目 标 本 教 程 解 决 以 下 问 题, 帮 助 您 快 速 了 解 itestin 1. itestin 能 干 什 么 2. 如 何 获 取 到 最 新 版 本 的 itestin 3. 如 何 使 用 itestin 录 制 一 个 基 于 组 件 ( 控 件 ) 的 简 单 脚 本 ; 4. 如 何 进 行 回 放 5. 如 何 提 交 云 端 测 试 6.

More information

中国科学技术大学电子工程与信息科学系 2018 实验十八 Android 下使用 Tensorflow 模型 一 实验目的 (1) 了解 Tensorflow 模型文件的生成和保存 (2) 学习 Android 下使用 C++ 库的基本步骤 (3) 学习 Android 下使用 Tensorflow

中国科学技术大学电子工程与信息科学系 2018 实验十八 Android 下使用 Tensorflow 模型 一 实验目的 (1) 了解 Tensorflow 模型文件的生成和保存 (2) 学习 Android 下使用 C++ 库的基本步骤 (3) 学习 Android 下使用 Tensorflow 实验十八 Android 下使用 Tensorflow 模型 一 实验目的 (1) 了解 Tensorflow 模型文件的生成和保存 (2) 学习 Android 下使用 C++ 库的基本步骤 (3) 学习 Android 下使用 Tensorflow 所生成的模型 二 实验原理 1 Python 开发环境 Anaconda Anaconda 指的是一个开源的 Python 发行版本, 其包含了 conda

More information

untitled

untitled ,, : ; ; ; ; ; ;,, : ( ) : : : ( ) : : : 6 1 6 1 1 : ,,,,,,,,, :,,,,,,, ,,,,,,,,,, ;, ;,,,,,,,,, : 1. 2.,,, 3.,,,,,,,, ;,,,,, : 1.,, 2.,, ;,,,, 3.,,,,,, 4.,,, ;,,, ;,,,,,,,,,,,,,, ;,,,,,,,, : 1. :,,,

More information

電機工程系認可證照清單 2011/7/1

電機工程系認可證照清單                  2011/7/1 南 台 科 技 大 學 電 機 工 程 系 專 業 證 照 課 程 實 施 要 點 96 年 10 月 05 日 系 務 會 議 通 過 100 年 06 月 30 日 系 務 會 議 修 正 通 過 101 年 06 月 21 日 系 務 會 議 修 正 通 過 一 本 系 為 提 升 學 生 的 專 業 技 能, 特 訂 定 本 辦 法 二 實 施 對 象 : 本 系 日 間 部 96 學 年

More information

没有幻灯片标题

没有幻灯片标题 指针作为函数参数 : 原因 : 1 需要修改一个或多个值,( 用 return 语句不能解决问题 ) 2 执行效率的角度 使用方法 : 在函数原型以及函数首部中需要声明能够接受指针值的形参, 具体的写法为 : 数据类型 * 形参名 如果有多个指针型形参, 则用逗号分隔, 例如 : void swap(int *p1, int *p2) 它说明了形参 p1 p2 是指向整型变量的指针 在函数调用时,

More information

菩提道次第廣論

菩提道次第廣論 菩 提 道 次 第 广 论 下 士 道 ( 二 ) 深 信 业 果 18 ( 分 别 业 的 轻 重 3 ) 最 尊 贵 的 净 莲 上 师 讲 解 我 们 继 续 说 明 为 什 么 业 特 别 重 大 的 原 因 第 二 个, 是 它 所 依 门, 所 依 门 的 缘 故, 依 它 所 依 的 内 容 而 有 轻 重 的 差 别 第 一 个, 它 所 依 的 是 什 么 呢? 就 是 你 是 不

More information

路 上 沒 說 話, 車 子 被 爸 離 去 後 開 走 了, 沒 什 麼 變, 除 了 一 股 淡 淡 的 香 味, 我 不 太 習 慣, 像 空 氣 中 的 粉 塵, 左 飄 右 飄, 光 中 飛 舞 我 沒 提, 看 車 窗 外, 外 面 不 太 有 趣, 我 只 是 沒 事 幹, 我 們 本

路 上 沒 說 話, 車 子 被 爸 離 去 後 開 走 了, 沒 什 麼 變, 除 了 一 股 淡 淡 的 香 味, 我 不 太 習 慣, 像 空 氣 中 的 粉 塵, 左 飄 右 飄, 光 中 飛 舞 我 沒 提, 看 車 窗 外, 外 面 不 太 有 趣, 我 只 是 沒 事 幹, 我 們 本 午 睡 中 午, 門 鈴 又 響, 我 去 開 門 門 眼 外 的 玄 關 很 暗, 燈 關 上 了, 我 看 見 一 個 男 人 站 在 門 外, 低 著 頭, 我 猜 他 在 看 信, 他 的 髮 旋 對 著 我, 沒 有 表 情 有 些 陌 生, 我 打 開 內 門, 那 個 男 人 露 出 臉, 隔 著 鐵 門 露 出 微 笑, 我 說 爸, 他 回 一 聲 我 遲 疑 著 轉 開 鎖, 打

More information

繁 華 國 小 101 學 年 母 親 節 感 恩 惜 福 - 跳 蚤 市 場 暨 科 學 闖 關 遊 戲 親 子 活 動 實 施 計 畫 一 依 據 : 本 校 101 學 年 度 校 務 計 畫 及 行 事 曆 二 目 的 : 1. 培 養 學 生 感 恩 惜 物 知 福 惜 福 的 節 儉 觀

繁 華 國 小 101 學 年 母 親 節 感 恩 惜 福 - 跳 蚤 市 場 暨 科 學 闖 關 遊 戲 親 子 活 動 實 施 計 畫 一 依 據 : 本 校 101 學 年 度 校 務 計 畫 及 行 事 曆 二 目 的 : 1. 培 養 學 生 感 恩 惜 物 知 福 惜 福 的 節 儉 觀 屏 東 縣 繁 華 國 小 慶 祝 101 學 年 度 母 親 節 活 動 實 施 計 劃 壹 依 據. 一. 本 校 101 年 度 推 廣 教 育 優 先 區 親 職 教 育 及 社 區 化 教 育 辦 理 二. 本 校 101 學 年 度 第 二 學 期 行 事 曆 計 劃 辦 理 貳 目 的. 一. 建 立 正 確 的 現 代 父 母 角 色, 發 揮 親 職 教 育 之 功 能 二. 增

More information

台 中 市 北 屯 區 東 山 里 橫 坑 9 林 志 明 0932-511633 巷 89-5 菜 豆 菜 大 漿 果 菜 豆 菜 大 漿 果 小 漿 果 核 果 柑 桔 9210065 103.2.21 107..19 210065 無 107.2.12 10 陳 錦 生 新 竹 市 香 山 區

台 中 市 北 屯 區 東 山 里 橫 坑 9 林 志 明 0932-511633 巷 89-5 菜 豆 菜 大 漿 果 菜 豆 菜 大 漿 果 小 漿 果 核 果 柑 桔 9210065 103.2.21 107..19 210065 無 107.2.12 10 陳 錦 生 新 竹 市 香 山 區 序 農 產 品 經 營 業 者 名 稱 1 劉 士 魁 2 林 東 詳 3 林 俊 堯 廖 本 源 5 林 碧 龍 10 年 驗 戶 名 冊 ( 生 產 加 工 分 裝 流 通 ) 地 址 彰 化 縣 永 靖 鄉 崙 子 村 九 分 路 192 巷 21 屏 東 縣 屏 東 市 空 翔 里 2 鄰 迪 化 一 街 67 台 中 市 太 平 區 育 誠 街 12 巷 1 屏 東 縣 屏 東 市 華 盛

More information

45 45 67 1935 10 7 1937 4 6 1943 1945 4 1952 46 47 5 5 1 5 1979 1964 1949 1954 1966 1967 1 9 48 49 1960 70 12 16 1 2 3 4 5 6 1970 1964 1966 50 51 1993 2001 1990 1993 9 25 1950 6 5 7 96 811 12 8 10 1972

More information

育儿小故事(四)

育儿小故事(四) 9998.00 (1CD, ) I...1...2...4...6...7...8...9... 11...12...14...15...16...21...23...38...44...44...50...52...70...74...79...84...89...97 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25

More information

epub 33-8

epub 33-8 8 1) 2) 3) A S C I I 4 C I / O I / 8.1 8.1.1 1. ANSI C F I L E s t d i o. h typedef struct i n t _ f d ; i n t _ c l e f t ; i n t _ m o d e ; c h a r *_ n e x t ; char *_buff; /* /* /* /* /* 1 5 4 C FILE

More information

Chapter 2 GIGA-BYTE TECHNOLOGY CO., LTD. ("GBT") GBT GBT GBT

Chapter 2 GIGA-BYTE TECHNOLOGY CO., LTD. (GBT) GBT GBT GBT Chapter 2 GIGA-BYTE TECHNOLOGY CO., LTD. ("GBT") GBT GBT GBT 2003 6 5-1 - 1....3 1.1....3 1.2. Radeon 9200...3 2....4 2.1....4 2.2....5 2.3....7 3....9 3.1. Windows 98/98SE Windows ME Windows XP...9 3.1.1....

More information

02

02 Thinking in C++: Volume One: Introduction to Standard C++, Second Edition & Volume Two: Practical Programming C++ C C++ C++ 3 3 C C class C++ C++ C++ C++ string vector 2.1 interpreter compiler 2.1.1 BASIC

More information

PowerPoint Presentation

PowerPoint Presentation 中 小 IT 企 业 人 力 资 源 管 理 咨 询 简 介 一 背 景 分 析 二 需 求 分 析 三 服 务 内 容 四 操 作 流 程 五 斯 隆 优 势 六 行 业 案 例 七 服 务 理 念 目 录 一 背 景 分 析 -IT 业 现 状 分 析 IT 产 业 的 总 量 水 平 较 低 中 国 IT IT 现 状 总 体 规 模 较 小 技 术 自 主 创 新 能 力 差 对 经 济 的

More information

ebook 86-15

ebook 86-15 15 G t k + d e l e t e _ e v e n t G n o m e G n o m e 15.1 GnomeDialog G t k + G n o m e D i a l o g 15.1.1 G n o m e D i a l o g g n o m e _ d i a l o g _ n e w ( ) G N O M E _ D I A L O G ( d i a l

More information

Microsoft Word - 在VMWare-5.5+RedHat-9下建立本机QTopia-2.1.1虚拟平台a.doc

Microsoft Word - 在VMWare-5.5+RedHat-9下建立本机QTopia-2.1.1虚拟平台a.doc 在 VMWare-5.5+RedHat-9 下建立 本机 QTopia-2.1.1 虚拟平台 张大海 2008-5-9 一 资源下载 1. 需要以下安装包 : tmake-1.13.tar.gz qtopia-free-source-2.1.1.tar.gz qt-embedded-2.3.10-free.tar.gz qt-x11-2.3.2.tar.gz qt-x11-free-3.3.4.tar.gz

More information

《C语言程序设计》教材习题参考答案

《C语言程序设计》教材习题参考答案 教材名称 : C 语言程序设计 ( 第 1 版 ) 黄保和 江弋编著清华大学出版社 ISBN:978-7-302-13599-9, 红色封面 答案制作时间 :2011 年 2 月 -5 月 一 选择题 1. 设已定义 int a, * p, 下列赋值表达式中正确的是 :C)p=&a 2. 设已定义 int x,*p=&x;, 则下列表达式中错误的是 :B)&*x 3. 若已定义 int a=1,*b=&a;,

More information

Windows RTEMS 1 Danilliu MMI TCP/IP QEMU i386 QEMU ARM POWERPC i386 IPC PC104 uc/os-ii uc/os MMI TCP/IP i386 PORT Linux ecos Linux ecos ecos eco

Windows RTEMS 1 Danilliu MMI TCP/IP QEMU i386 QEMU ARM POWERPC i386 IPC PC104 uc/os-ii uc/os MMI TCP/IP i386 PORT Linux ecos Linux ecos ecos eco Windows RTEMS 1 Danilliu MMI TCP/IP 80486 QEMU i386 QEMU ARM POWERPC i386 IPC PC104 uc/os-ii uc/os MMI TCP/IP i386 PORT Linux ecos Linux ecos ecos ecos Email www.rtems.com RTEMS ecos RTEMS RTEMS Windows

More information

PTR89 应用程序编程接口 V1.00

PTR89 应用程序编程接口 V1.00 PTR89 便携式热敏打印机 应用程序编程接口 V1.00 如有任何更改, 恕不另行通知 目录 1.0. 简介... 3 1.1. 文档范围和限制... 3 1.2. 参考... 3 2.0. 数据结构... 4 2.1. PRT_PAGE_MODE_PARAM... 4 3.0. API 函数... 5 3.1. Printer_Open... 5 3.2. Printer_Close... 5

More information

OOP with Java 通知 Project 2 提交时间 : 3 月 21 日晚 9 点 作业提交格式 学习使用 文本编辑器 cmd, PowerShell (Windows), terminal(linux, Mac)

OOP with Java 通知 Project 2 提交时间 : 3 月 21 日晚 9 点 作业提交格式 学习使用 文本编辑器 cmd, PowerShell (Windows), terminal(linux, Mac) OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 2 提交时间 : 3 月 21 日晚 9 点 作业提交格式 学习使用 文本编辑器 cmd, PowerShell (Windows), terminal(linux, Mac) 复习 面向对象编程 将实际问题分解成不同的对象 不的对象提供不同的服务 对象之间可以传递消息 例子小李深夜

More information

试卷代号 ~1075 座位号 E 口 国家开放大学 ( 中央广播电视大学 )20]5 年秋季学期 " 开放本科 " 期末考试 C 十十语言程序设计 试题 同二二十斗 2016 年 1 月 巴叫一 1. 下面的保留字 ( ) 不能作为函数的返回类型 A. void B. int C. new D. l

试卷代号 ~1075 座位号 E 口 国家开放大学 ( 中央广播电视大学 )20]5 年秋季学期  开放本科  期末考试 C 十十语言程序设计 试题 同二二十斗 2016 年 1 月 巴叫一 1. 下面的保留字 ( ) 不能作为函数的返回类型 A. void B. int C. new D. l 试卷代号 ~1075 座位号 E 口 国家开放大学 ( 中央广播电视大学 )20]5 年秋季学期 " 开放本科 " 期末考试 C 十十语言程序设计 试题 同二二十斗 2016 年 1 月 巴叫一 1. 下面的保留字 ( ) 不能作为函数的返回类型 A. void B. int C. new D. long 2. 在每个 c++ 程序中都必须包含有这样一个函数, 该函数的函数名为 ( ) A. main

More information

Linux 操作系统课程社区创作

Linux 操作系统课程社区创作 学 号 14284060xx 等 第 苏 州 大 学 实 验 报 告 Linux 操 作 系 统 课 程 社 区 创 作 院 ( 系 ) 名 称 : 电 子 信 息 学 院 专 业 名 称 : 14 通 信 工 程 ( 嵌 入 式 培 养 ) 学 生 姓 名 : 某 某 某 课 程 名 称 : Linux 操 作 系 统 2015-2016 学 年 第 一 学 期 1 摘 要 这 是 摘 要 主 要

More information

《计算概论》课程 第十九讲 C 程序设计语言应用

《计算概论》课程 第十九讲  C 程序设计语言应用 计算概论 A 程序设计部分 字符数组与字符串 李戈 北京大学信息科学技术学院软件研究所 lige@sei.pku.edu.cn 字符数组的定义 #include int main() char a[10] = 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j' ; for (int i = 0; i < 10; i++) cout

More information

Microsoft PowerPoint - 3. 函数Functionl.ppt [兼容模式]

Microsoft PowerPoint - 3. 函数Functionl.ppt [兼容模式] 函数 Function 如何重用代码 How to reuse code 3 4 = 3*3*3*3 3 4,6 5 : 拷贝 - 粘帖代码 (Copy-paste code) 3 4,6 5,12 10 : 拷贝 - 粘帖代码 (Copy-paste code) Bad! 使用函数 (with a function) 使用函数 (with a function) 使用函数 (with a function)

More information

试卷代号 :1075 座位号 rn 国家开放大学 ( 中央广播电视大学 )2015 年秋季学期 " 开放本科 " 期末考试 c+ 十语言程序设计试题 2016 年 1 月 t 问一 Urr-f 斗 士 1 1. 下面的保留字 ( ) 不能作为函数的返回类型 A. void B. int C. new

试卷代号 :1075 座位号 rn 国家开放大学 ( 中央广播电视大学 )2015 年秋季学期  开放本科  期末考试 c+ 十语言程序设计试题 2016 年 1 月 t 问一 Urr-f 斗 士 1 1. 下面的保留字 ( ) 不能作为函数的返回类型 A. void B. int C. new 试卷代号 :1075 座位号 rn 国家开放大学 ( 中央广播电视大学 )2015 年秋季学期 " 开放本科 " 期末考试 c+ 十语言程序设计试题 2016 年 1 月 t 问一 Urr-f 斗 士 1 1. 下面的保留字 ( ) 不能作为函数的返回类型 A. void B. int C. new D. long 2. 在每个 C 十 + 程序中都必须包含有这样一个函数, 该函数的函数名为 ) A.main

More information

新・解きながら学ぶJava

新・解きながら学ぶJava 481! 41, 74!= 40, 270 " 4 % 23, 25 %% 121 %c 425 %d 121 %o 121 %x 121 & 199 && 48 ' 81, 425 ( ) 14, 17 ( ) 128 ( ) 183 * 23 */ 3, 390 ++ 79 ++ 80 += 93 + 22 + 23 + 279 + 14 + 124 + 7, 148, 16 -- 79 --

More information

ebook8-30

ebook8-30 3 0 C C C C C C++ C + + C++ GNU C/C++ GNU egcs UNIX shell s h e l l g a w k P e r l U N I X I / O UNIX shell awk P e r l U N I X C C C C C C U N I X 30.1 C C U N I X 70 C C U N I X U N I X U N I X C Dennis

More information