- rknn_test(const char *test_name); /* 构造函数,需要提供一个test_name作为输出的窗口名称 */
- ~rknn_test(); /* 析构函数 */
- int load_model(const char *path); /* 加载rknn模型 */
- int set_input_info(int width, int height, int channels); /* 设置模型的输入大小,rknn_test会自动完成resize功能 */
- int run(int video_node, /* video节点号,为0时,打开video0节点获取摄像头图像作为输入 */
- /* func 为后处理回调函数*/
- int (*func) (void *data /* in 用户数据指针 */, cv::Mat & img /* in 图像数据,可以在上面绘制结果 */, float fps /* in 帧率 */, struct rknn_out_data * out_data<font color="#008000"> /* in rknn推理结果 */</font>),
- void *data /* 用户数据指针,提供给func使用 */);
- /* 同上,支持视频文件作为输入 */
- int run(const char *video_name,
- int (*func) (void *data, cv::Mat & img, float fps,
- struct rknn_out_data * out_data), void *data);
复制代码
- int main(void)
- {
- int ret;
- /* 自定义数据,用于post_process函数使用 */
- struct ssd_data data;
- /* load label and boxPriors */
- loadLabelName(LABEL_PATH, data.labels);
- loadCoderOptions(BOX_PRIO_PATH, data.boxPriors);
- /* 创建一个测试实例 */
- class rknn_test test(WIN_NAME);
- /* 加载模型 */
- ret = test.load_model(MODEL_PATH);
- if (ret < 0) {
- printf("load_model error!!!\n");
- return ret;
- }
- /* 设置输入图像的属性 */
- ret = test.set_input_info(INPUT_WIDTH, INPUT_HEIGHT, INPUT_CHANNEL);
- if (ret < 0) {
- printf("set_input_info error!!!\n");
- return ret;
- }
- /* 开始运行,支持摄像头和视频文件方式 */
- /* 使用摄像头时,VIDEO_NODE可以设置为0,表示从video 0节点获取图像数据 */
- /* 使用视频时,VIDEO_NODE可以设置为文件路径,如"xxx.mp4",表示从视频文件获取图像数据 */
- /* post_process为自定义的后处理函数,RKNN相关操作已封装,只需完成后处理即可 */
- ret = test.run(VIDEO_NODE, post_process, &data);
- return ret;
- }
复制代码
lappaport 发表于 2019-5-23 20:32
百度云盘提取码错误
protossw512 发表于 2019-6-15 01:48
可以放到github上面吗?
shopping 发表于 2019-9-16 15:03
这样说,我 mobilenet-ssd 提高至 30fps 有救了?
Devin 发表于 2020-1-2 14:33
请问你实测多少帧啊,谢谢!
Mr.Tang 发表于 2020-5-6 19:03
struct rknn_out_data {
float *out[8];
};
- float *predictions = (float *)out_data->out[0]
复制代码
才对!!!然后对predictions的内容打印出来跟Python对比即可。troy 发表于 2020-5-7 09:03
建议可以先把demo的逻辑先理一下。
框架部分,即common部分代码不需要改动,框架会去自动查询模型有几个 ...
float sum = 0;for (int i = 0; i < n; ++i) {float value;value = predictions;sum += value;// printf("%f\n",value);// printf("%d\n",i);}printf("==================\n");printf("run over, sum is %f\n",sum);
Mr.Tang 发表于 2020-5-7 09:37
谢谢,还有问题需要请教在python中你们rknn的api输出的维度一般都是1*n,c输出的维度是怎样的格式,没有找 ...
欢迎光临 Toybrick (https://t.rock-chips.com/) | Powered by Discuz! X3.3 |