boost解析info文件

先給出info文件:

parameters
{MAX_STAGES 4MAX_DEPTH 3MAX_NUMTRESS 5MAX_NUMTHRESHS 500MAX_NUMFEATS 1000,1000,1000,500,500,500,400,400MAX_RATIO_RADIUS 0.3,0.2,0.2,0.15,0.12,0.10,0.08,0.06,0.06,0.05BAGGING_OVERLAP 0.4IS_FLIP true
}meanface
{MAX_ITERS 120MAX_ERRORS 0.000001SCALE_FACTOR 1.0SCALE_CONST 1.0WIDTH_DIV 1.95HEIGHT_DIV 1.60
}train
{FACE_DETECT_PATH haarcascade_frontalface_alt2.xml   LANDMARK_TYPE LANDMARK_TYPE_68  dataset{0{DATA_PATH E:\\dataset\\lfpw\\trainset\\Path_Images.txt}1{DATA_PATH E:\\datasets\\afw\\Path_Images.txt}}
}

接下來我們給出使用boost如何解析上述文件:
params.h內容:

#ifndef PARAMS_H
#define PARAMS_H#include <string>
#include <vector>using sParams = struct sParams{int     __max_numstage;int     __max_depth;int*    __max_numfeats = nullptr;int     __max_numtrees;int     __max_numthreshs;double  __bagging_overlap;double* __max_raio_radius = nullptr;bool    __isflip;//mean faceint    __procrustes_iters;double __procrustes_errors;double __facebox_scale_factor;double __facebox_scale_const;double __facebox_width_div;double __facebox_height_div;std::string               __landmark_type;std::vector<std::string>  __images_path;
};#endif

具體的讀取方法:


#include <boost/program_options.hpp>
#include <boost/filesystem/path.hpp>
#include <boost/algorithm/string.hpp>
#include <boost/property_tree/ptree.hpp>
#include <boost/property_tree/info_parser.hpp>
#include "params.h"
#include <iostream>namespace po = boost::program_options;
using boost::filesystem::path;
using boost::property_tree::ptree;void Init_Params(sParams *params)
{params->__max_numfeats = NULL;params->__max_raio_radius = NULL;
}int main(int argc, char *argv[])
{path configfile = "./train.info";ptree pt;sParams params;try {read_info(configfile.string(), pt);}catch (const boost::property_tree::ptree_error& e) {std::cout << std::string("Error reading the config file: ") + e.what() << std::endl;return -EXIT_FAILURE;}try{ptree parameters = pt.get_child("parameters");params.__max_numstage = parameters.get<int>("MAX_STAGES");params.__max_depth = parameters.get<int>("MAX_DEPTH");params.__max_numtrees = parameters.get<int>("MAX_NUMTRESS");params.__max_numthreshs = parameters.get<int>("MAX_NUMTHRESHS");params.__bagging_overlap = parameters.get<double>("BAGGING_OVERLAP");params.__isflip = parameters.get<bool>("IS_FLIP");std::string str_numfeats = parameters.get<std::string>("MAX_NUMFEATS");std::string str_ration = parameters.get<std::string>("MAX_RATIO_RADIUS");std::vector<std::string> split_numfeats;std::vector<std::string> split_ration;boost::split(split_numfeats, str_numfeats, boost::is_any_of(","));int num_numfeats = 0;for (int i = 0; i < split_numfeats.size(); i++){if (split_numfeats[i] != std::string(",")){num_numfeats++;}}params.__max_numfeats = new int[num_numfeats];int index = 0;for (int i = 0; i < split_numfeats.size(); i++){if (split_numfeats[i] != std::string(",")){params.__max_numfeats[index] = boost::lexical_cast<int>(split_numfeats[i]);index++;}}boost::split(split_ration, str_ration, boost::is_any_of(","));int num_ration = 0;for (int i = 0; i < split_ration.size(); i++){if (split_ration[i] != std::string(",")){num_ration++;}}params.__max_raio_radius = new double[num_ration];for (int i = 0, index = 0; i < split_ration.size(); i++){if (split_ration[i] != std::string(",")){params.__max_raio_radius[index] = boost::lexical_cast<double>(split_ration[i]);index++;}}//init mean faceptree meanface = pt.get_child("meanface");params.__procrustes_iters = meanface.get<int>("MAX_ITERS");params.__procrustes_errors = meanface.get<double>("MAX_ERRORS");params.__facebox_scale_factor = meanface.get<double>("SCALE_FACTOR");params.__facebox_scale_const = meanface.get<double>("SCALE_CONST");params.__facebox_width_div = meanface.get<double>("WIDTH_DIV");params.__facebox_height_div = meanface.get<double>("HEIGHT_DIV");//init trainptree train = pt.get_child("train");std::string facedetect_file = train.get<std::string>("FACE_DETECT_PATH");params.__landmark_type = train.get<std::string>("LANDMARK_TYPE");ptree dataset = train.get_child("dataset");for (auto it = dataset.begin(); it != dataset.end(); it++){std::string dataset_str = it->second.get<std::string>("DATA_PATH");params.__images_path.push_back(dataset_str);}}catch (const boost::property_tree::ptree_error& error){std::cout << std::string("Parsing config: ") + error.what() << std::endl;return -EXIT_FAILURE;}delete params.__max_numfeats;delete params.__max_raio_radius;return EXIT_SUCCESS;
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/258954.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/258954.shtml
英文地址,請注明出處:http://en.pswp.cn/news/258954.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Font Rending 的 Hint 機制對排版的影響

Font Rending 的 Hint 機制對排版的影響【轉】 在設計一種 Font 時&#xff0c;設計者使用的是一個抽象的單位&#xff0c;叫做 EM&#xff0c;來源于大寫 M 的寬度&#xff08;通常英文字體中大寫 M 的寬度最大&#xff09;。EM 即不同于在屏幕顯示時用的像素&#xff08;Pixe…

《SQL初學者指南(第2版)》——2.4 指定列

本節書摘來自異步社區出版社《SQL初學者指南&#xff08;第2版&#xff09;》一書中的第2章&#xff0c;第2.4節&#xff0c;作者&#xff1a;【美】Larry Rockoff&#xff0c;更多章節內容可以訪問云棲社區“異步社區”公眾號查看。 2.4 指定列 到目前為止&#xff0c;我們只…

python從文件中提取特定文本_使用Python從HTML文件中提取文本

我發現最好的一段代碼用于提取文本&#xff0c;而不需要javascript或不需要的東西&#xff1a;import urllibfrom bs4 import BeautifulSoupurl "http://news.bbc.co.uk/2/hi/health/2284783.stm"html urllib.urlopen(url).read()soup BeautifulSoup(html)# kill …

mutable、volatile的使用

本文轉載自http://blog.csdn.net/tht2009/article/details/6920511 (1)mutable 在C中&#xff0c;mutable是為了突破const的限制而設置的。被mutable修飾的變量&#xff0c;將永遠處于可變的狀態&#xff0c;即使在一個const函數中&#xff0c;甚至結構體變量或者類對象為const…

文本框點擊后文字消失總結

1.文本框顯示默認文字&#xff1a; <textarea>白鴿男孩</textarea> <textarea>白鴿男孩</textarea>    2.鼠標點擊文本框&#xff0c;默認文字消失&#xff1a; <textarea οnfοcus”if(value’白鴿男孩’) {value’ ‘}”>白鴿男孩</text…

[裴禮文數學分析中的典型問題與方法習題參考解答]4.5.8

需要全部的解答, 請 http://www.cnblogs.com/zhangzujin/p/3527416.html 設 $f(x)$ 在 $[a,\infty)$ 上可微; 且 $x\to\infty$ 時, $f(x)$ 單調遞增趨于 $\infty$, 則 $$\bex \int_a^\infty \sin f(x)\rd x,\quad \int_a^\infty \cos f(x)\rd x \eex$$ 都收斂. 證明: 由 $$\be…

《PowerShell V3——SQL Server 2012數據庫自動化運維權威指南》——2.13 創建視圖...

本節書摘來自異步社區出版社《PowerShell V3—SQL Server 2012數據庫自動化運維權威指南》一書中的第2章&#xff0c;第2.13節&#xff0c;作者&#xff1a;【加拿大】Donabel Santos&#xff0c;更多章節內容可以訪問云棲社區“異步社區”公眾號查看。 2.13 創建視圖 本方案展…

python刷抖音_用Python生成抖音字符視頻!

抖音字符視頻在去年火過一段時間。 反正我是始終忘不了那段極樂凈土的音樂... 這一次自己也來實現一波&#xff0c;做一個字符視頻出來。 主要用到的庫有cv2&#xff0c;pillow庫。 原視頻如下&#xff0c;直接抖音下載的&#xff0c;妥妥的水印。 不過并不影響本次的操作。 / …

變長參數

轉載自&#xff1a;http://blog.csdn.net/tht2009/article/details/7019635 變長參數 設計一個參數個數可變、參數類型不定的函數是可能的&#xff0c;最常見的例子是printf函數、scanf函數和高級語言的Format函數。在C/C中&#xff0c;為了通知編譯器函數的參數個數和類型可變…

第十七章 我國農業科學技術

農村改革解說&#xff08;專著&#xff09;第十七章 第十七章 我國農業科學技術 1、為什么說科學技術是生產力&#xff1f; 我們說科學技術是生產力&#xff0c;是因為在構成生產力的兩個主要因素中&#xff0c;都包含著科學技術在內。 A、生產力中人的因素是同一定的科學技術緊…

《淘寶網開店 拍攝 修圖 設計 裝修 實戰150招》一一1.2 選購鏡頭時應注意的事項...

本節書摘來自異步社區出版社《淘寶網開店 拍攝 修圖 設計 裝修 實戰150招》一書中的第1章&#xff0c;第1.2節&#xff0c;作者&#xff1a; 葛存山&#xff0c;更多章節內容可以訪問云棲社區“異步社區”公眾號查看。 1.2 選購鏡頭時應注意的事項 面對如此之多的鏡頭&#xf…

OpenCV中的神器Image Watch

Image Watch是在VS2012上使用的一款OpenCV工具&#xff0c;能夠實時顯示圖像和矩陣Mat的內容&#xff0c;跟Matlab很像&#xff0c;方便程序調試&#xff0c;相當好用。跟VS2012配合使用&#xff0c;簡直就是一款神器&#xff01;讓我一下就愛上它了&#xff01; 下面介紹一些鏈…

python異步_Python通過Thread實現異步

當long函數耗時較長時&#xff0c;需要程序先向下執行&#xff0c;這就需要異步&#xff0c;改寫代碼如下&#xff1a; import _thread import time def long(cb): print (long execute) def fun(callback): time.sleep(5) result long end callback(result) _thread.start_ne…

SAM4E單片機之旅——13、LCD之ASF初步

在Atmel Studio 6中&#xff0c;集成了Atmel Software Framework&#xff08;ASF框架&#xff09;。通過它提供的庫&#xff0c;可以很快速地完成新的項目。 這次的最終目標使用ASF在LCD上顯示出文字“Hello World!”&#xff0c;現階段目標是點亮LCD的背光&#xff0c;學習目標…

《HTML5與CSS3實戰指南》——2.2 基本的HTML5模板

本節書摘來自異步社區《HTML5與CSS3實戰指南》一書中的第2章&#xff0c;第2.2節,作者&#xff1a; 【美】Estelle Weyl , Louis Lazaris , Alexis Goldstein 更多章節內容可以訪問云棲社區“異步社區”公眾號查看。 2.2 基本的HTML5模板 在您學習HTML5和新技術時&#xff0c;您…

c# Message const

typeTMsg packed recordhwnd: HWND; //窗口句柄message: UINT;//消息常量標識符wParam: WPARAM ;// 32位消息的特定附加信息lParam: LPARAM ;// 32位消息的特定附加信息time: DWORD;//消息創建時的時間pt: TPoint; //消息創建時的鼠標位置end ; 消息中有什么&#xff1f;是否覺…

OpenCV坐標體系的初步認識

實驗基礎本次實驗通過一個簡短的例子&#xff0c;主要來說明下面4個問題&#xff1a; 1. 坐標體系中的零點坐標為圖片的左上角&#xff0c;X軸為圖像矩形的上面那條水平線&#xff1b;Y軸為圖像矩形左邊的那條垂直線。該坐標體系在諸如結構體Mat,Rect,Point中都是適用的。&…

python爬取知乎live_Python爬蟲 - 簡單抓取百度指數

前言有點忙&#xff0c;沒空寫東西&#xff0c;這是之前寫的&#xff0c;加了些配圖而已 這次要爬的網站是百度指數 正文 一、分析 打開網站(百度指數)&#xff0c;呈現出來是這樣的 如果搜索的話就需要登陸了&#xff0c;如果沒有什么特別頻繁的請求的話&#xff0c;直接登陸復…

在Visual Studio上開發Node.js程序

在Visual Studio上開發Node.js程序 原文:在Visual Studio上開發Node.js程序【題外話】 最近準備用Node.js做些東西&#xff0c;于是找找看能否有Visual Studio上的插件以方便開發。結果還真找到了一個&#xff0c;來自微軟的Node.js Tools for Visual Studio&#xff08;NTVS&a…

Oracle ASM 翻譯系列第十一彈:高級知識 Offline or drop?

Offline or drop? 當一個ASM磁盤不可用時&#xff0c;ASM會把它從磁盤組里移除&#xff0c;對嗎&#xff1f;要看情況&#xff0c;通常取決于ASM版本和磁盤組的冗余級別。因為一個external冗余的磁盤組會直接被dismount&#xff0c;所以主要關注normal和high冗余磁盤組的情況。…