#include <iostream>
#include "json.hpp"
// for convenience
using json = nlohmann::json;
class BBX
{
public:
int x1;
int x2;
int y1;
int y2;
BBX(int ix1,int ix2,int iy1,int iy2){x1=ix1;x2=ix2;y1=iy1;y2=iy2;}
};
class Scene
{
public:
std::string scene_name;
double score;
Scene(std::string name,double iscore):scene_name(name),score(iscore){}
};
class Item
{
public:
std::string itemName;
BBX bbx;
double score;
Item(std::string name,BBX ibbx,double iscore):itemName(name),bbx(ibbx),score(iscore){}
};
class Model
{
public :
std::string image_name;
std::string drawn_image_abspath;
std::vector<Item>items;
std::vector<Scene> scenes;
Model(std::string imageName,std::string drawnPath):image_name(imageName),drawn_image_abspath(drawnPath){}
void add_item(Item item)
{
items.push_back(item);
}
void add_scene(Scene scene)
{
scenes.push_back(scene);
}
};
void gen_json_items(json &j,const Model model)
{
j["items"] = json::array();
for(int i=0;i<model.items.size();i++)
{
j["items"][i]["item_name"] = model.items[i].itemName;
j["items"][i]["bbx"]["x1"] = model.items[i].bbx.x1;
j["items"][i]["bbx"]["y1"] = model.items[i].bbx.y1;
j["items"][i]["bbx"]["x2"] = model.items[i].bbx.x2;
j["items"][i]["bbx"]["y2"] = model.items[i].bbx.y2;
j["items"][i]["score"] = model.items[i].score;
}
}
void gen_json_sences(json &j, const Model model)
{
j["scenes"] = json::array();
for(int i=0;i<model.scenes.size();i++)
{
j["scenes"][i]["score"] = model.scenes[i].score;
j["scenes"][i]["scene_name"] = model.scenes[i].scene_name;
}
}
int main()
{
Item item("person",BBX(2,3,4,5),0.4);
Item item2("xx",BBX(2,3,14,51),0.4);
Scene scene("shopping",0.8);
Model model("imageName","absPath");
model.add_item(item);
model.add_item(item2);
model.add_scene(scene);
json j;
j["image_name"] = model.image_name;
j["drawn_image_abspath"] = model.drawn_image_abspath;
gen_json_sences(j,model);
gen_json_items(j,model);
std::cout<<j.dump()<<std::endl;
return 0;
}