目录

  • 为什么?
  • 怎么做?

为什么?

举个例子,我们在使用C/C++进行深度学习模型的测试,由于测试过程中可能有许多参数要传给model,比如在进行目标检测时,要传入nms阈值等。我们要最优化测试结果,这类参数需要不断的调整,如果我们把这类参数的值写在C/C++代码中,每次修改都要重新进行make,这样十分麻烦。
       我们可以将这些参数写在一个json文件中,在C/C++代码中解析json文件,读取出参数。这样,我们每次修改参数的值,不需要重新进行make,省时省力。

怎么做?

  • 安装jsoncpp
sudo apt-get install libjsoncpp-dev

安装后,头文件在“/usr/include/jsoncpp/json"下,动态库文件在"/usr/lib/x86_64-linux-gnu/libjsoncpp.so.1.7.2"

  • 修改CMakeLists

在CMakeLists中要加入jsoncpp的头文件路径和动态库路径。具体如下:

SET(JSONCPP_INCLUDE /usr/include/)
SET(JSONCPP_LIBS /usr/lib/x86_64-linux-gnu/libjsoncpp.so.1.7.2)SET(INCLUDES_DIRS ${JSONCPP_INCLUDE})
SET(LIBS ${JSONCPP_LIBS})INCLUDE_DIRECTORIES(${INCLUDES_DIRS}
LINK_LIBRARIES(${LIBS})

假设我们的json文件长这样:

{"model1": {"model_path": "../path1/path2/xxx.model","batch_size": 1,"nms_threshold": 0.8}
}

我们可以使用如下代码读出这三个参数的值:

#include <fstream>
#include <sstream>
#include <iostream>
#include <jsoncpp/json/json.h>void parse_json()
{std::string path = "../params.json";std::ifstream fin;fin.open(path, std::ios::binary);Json::Reader reader;Json::Value root;if(reader.parse(fin, root, false)){std::string model_path = root["model1"]["model_path"].asString();int batch_size = root["model1"]["batch_size"].asInt();float nms_threshold = root["model1"]["nms_threshold"].asFloat();}
}

使用C/C++解析json文件相关推荐

  1. Java性能优化:正确的解析JSON文件

    为什么80%的码农都做不了架构师?>>>    数据收集服务平均1小时OOM(java.lang.OutOfMemoryError: GC overhead limit exceed ...

  2. python解析json_python解析json文件

    概念 序列化(Serialization):将对象的状态信息转换为可以存储或可以通过网络传输的过程,传输的格式可以是JSON.XML等.反序列化就是从存储区域(JSON,XML)读取反序列化对象的状态 ...

  3. 如何使用PHP解析JSON文件? [重复]

    本文翻译自:How can I parse a JSON file with PHP? [duplicate] This question already has an answer here: 这个 ...

  4. java解析json文件_Java性能优化:正确的解析JSON文件

    数据收集服务平均1小时OOM(java.lang.OutOfMemoryError: GC overhead limit exceeded)一次,发现都是在下载处理 JSON Atom Feed时OO ...

  5. Python解析json文件

    Python解析json文件 实现代码 import json import sysstdout = sys.stdoutwith open("company.json", &qu ...

  6. 关于 pandas 解析 json 文件和其他类型文件的结果中日期格式数据类型不一致的问题

    问题: 我有两个文件,一个 .csv 文件和一个 .json 文件,数据截图分别如下: 我的目的是解析这些文件,并将结果统一交由下一个程序块进行处理. 在了解到 pandas 可以解析数据文件(csv ...

  7. 解析json文件、执行批量修改sql

    要求:解析json文件,取出其中的参数,修改数据库中的数据 数据量:190万条 使用线程池批量处理sql 1.线程: public class DateHandleThread extends Thr ...

  8. 解析json文件的Go依赖包

    上一篇golang读取json配置文件介绍了使用encoding/json包来解析json文件,但是这种方法在面对结构复杂.字段较多的情况时,解析效率不是很高.上一篇中,我们在解析json文件时,需要 ...

  9. Android--------使用gson解析json文件

    ##使用gson解析json文件 **json的格式有两种:** **1. {}类型,及数据用{}包含:** **2. []类型,即数据用[]包含:** 下面用个例子,简单的介绍gson如何解析jso ...

最新文章

  1. 2005年个人防病毒软件评测报告
  2. malloc()/free()的实现
  3. JAVA——开启多线程的方法汇总
  4. Docker的四种网络模式和相关网络命令等操作
  5. how to find all element type with type table of content
  6. MySQL————表维护相关低频操作总结
  7. c 获取mysql安装路径_linux查看mysql安装路径
  8. 16.对极几何——极线约束,收敛相机,平行图像平面,两个立体对 测验_2
  9. datetime(0) NULL DEFAULT NULL报错
  10. 产品经理为什么越来越不值钱?不懂数据,只能尴尬退场
  11. 统计学习中常用的损失函数
  12. smartdns使用指南_OpenWrt之SmartDNS 使用教程(PLUS+版)
  13. 排序链表(归并排序)
  14. SQL注入时order by 后面加数字的作用
  15. SharePoint服务器端对象模型 之 使用CAML进行数据查询
  16. IOS 监控屏幕旋转
  17. 蓝桥杯单片机——第十二届蓝桥杯单片机第一场省赛
  18. 如何在代码中判断当前设备是iPhone 4/4S还是iPhone 5?
  19. 面试结束后,公司为什么不直接告诉我结果,而是让我回去等消息?
  20. matlab弹道仿真,战役战术导弹弹道仿真在simulink下如何实现

热门文章

  1. 机器学习中的维度灾难
  2. VTK修炼之道21:图像基本操作_彩色图像生成灰度图像
  3. 【MFC】1.Windows程序内部运行原理
  4. 解决PowerDesigner 16 Generate Datebase For Sql2005/2008 对象名sysproperties无效的问题
  5. 一个比较完整的Inno Setup 安装脚本
  6. sqlserver中的查询两个结果集的差的运算
  7. 32位x86处理器编程导入——《x86汇编语言:从实模式到保护模式》读书笔记08
  8. Feign,Apache Http Client,OkHttp的区别
  9. springboot学习笔记(七)
  10. 压缩命令_Linux环境下文件压缩打包命令详解