41 #include <visp/vpConfig.h>
48 #include <libxml/xmlmemory.h>
50 #include <visp/vpMbtKltXmlParser.h>
114 std::string file = filename;
139 bool klt_node =
false;
140 bool camera_node =
false;
141 bool face_node =
false;
143 for(xmlNodePtr dataNode = node->xmlChildrenNode; dataNode != NULL; dataNode = dataNode->next) {
144 if(dataNode->type == XML_ELEMENT_NODE){
145 std::map<std::string, int>::iterator iter_data= this->
nodeMap.find((
char*)dataNode->name);
146 if(iter_data !=
nodeMap.end()){
147 switch (iter_data->second){
169 std::cout <<
"WARNING: KLT Node not specified, default values used" << std::endl;
172 std::cout <<
"WARNING: CAMERA Node not specified, default values used" << std::endl;
175 std::cout <<
"WARNING: FACE Node not specified, default values used" << std::endl;
189 bool angle_appear_node =
false;
190 bool angle_disappear_node =
false;
191 bool near_clipping_node =
false;
192 bool far_clipping_node =
false;
193 bool fov_clipping_node =
false;
195 for(xmlNodePtr dataNode = node->xmlChildrenNode; dataNode != NULL; dataNode = dataNode->next) {
196 if(dataNode->type == XML_ELEMENT_NODE){
197 std::map<std::string, int>::iterator iter_data= this->
nodeMap.find((
char*)dataNode->name);
198 if(iter_data !=
nodeMap.end()){
199 switch (iter_data->second){
202 angle_appear_node =
true;
206 angle_disappear_node =
true;
210 near_clipping_node =
true;
215 far_clipping_node =
true;
220 fov_clipping_node =
true;
230 if(!angle_appear_node)
231 std::cout <<
"WARNING: In FACE Node, ANGLE_APPEAR Node not specified, default value used : " <<
angleAppear << std::endl;
233 std::cout <<
"face : Angle Appear "<<
angleAppear <<std::endl;
235 if(!angle_disappear_node)
236 std::cout <<
"WARNING: In FACE Node, ANGLE_DESAPPEAR Node not specified, default value used : " <<
angleDisappear << std::endl;
238 std::cout <<
"face : Angle Disappear : "<<
angleDisappear <<std::endl;
240 if(!near_clipping_node)
241 std::cout <<
"WARNING: In FACE Node, NEAR_CLIPPING Node not specified, no near clipping used" << std::endl;
243 std::cout <<
"face : Near Clipping : "<<
nearClipping <<std::endl;
245 if(!far_clipping_node)
246 std::cout <<
"WARNING: In FACE Node, FAR_CLIPPING Node not specified, no far clipping used" << std::endl;
248 std::cout <<
"face : Far Clipping : "<<
farClipping <<std::endl;
250 if(!fov_clipping_node)
251 std::cout <<
"WARNING: In FACE Node, FOV_CLIPPING Node not specified, no fov clipping used" << std::endl;
254 std::cout <<
"face : Fov Clipping : True" <<std::endl;
256 std::cout <<
"face : Fov Clipping : False" <<std::endl;
271 bool mask_border_node =
false;
272 bool max_features_node =
false;
273 bool window_size_node =
false;
274 bool quality_node =
false;
275 bool min_distance_node =
false;
276 bool harris_node =
false;
277 bool size_block_node =
false;
278 bool pyramid_lvl_node =
false;
280 for(xmlNodePtr dataNode = node->xmlChildrenNode; dataNode != NULL; dataNode = dataNode->next) {
281 if(dataNode->type == XML_ELEMENT_NODE){
282 std::map<std::string, int>::iterator iter_data= this->
nodeMap.find((
char*)dataNode->name);
283 if(iter_data !=
nodeMap.end()){
284 switch (iter_data->second){
287 mask_border_node =
true;
291 max_features_node =
true;
295 window_size_node =
true;
303 min_distance_node =
true;
311 size_block_node =
true;
315 pyramid_lvl_node =
true;
325 if(!mask_border_node)
326 std::cout <<
"WARNING: In KLT Node, MASK_BORDER Node not specified, default value used : " <<
maskBorder << std::endl;
328 std::cout <<
"klt : Mask Border : "<<
maskBorder <<std::endl;
330 if(!max_features_node)
331 std::cout <<
"WARNING: In KLT Node, MAX_FEATURES Node not specified, default value used : " <<
maxFeatures << std::endl;
333 std::cout <<
"klt : Max Features : "<<
maxFeatures <<std::endl;
335 if(!window_size_node)
336 std::cout <<
"WARNING: In KLT Node, WINDOW_SIZE Node not specified, default value used : " <<
winSize << std::endl;
338 std::cout <<
"klt : Windows Size : "<<
winSize <<std::endl;
341 std::cout <<
"WARNING: In KLT Node, QUALITY Node not specified, default value used : " <<
qualityValue << std::endl;
343 std::cout <<
"klt : Quality : "<<
qualityValue <<std::endl;
345 if(!min_distance_node)
346 std::cout <<
"WARNING: In KLT Node, MIN_DISTANCE Node not specified, default value used : " <<
minDist << std::endl;
348 std::cout <<
"klt : Min Distance : "<<
minDist <<std::endl;
351 std::cout <<
"WARNING: In KLT Node, HARRIS Node not specified, default value used : " <<
harrisParam << std::endl;
353 std::cout <<
"klt : Harris Parameter : "<<
harrisParam <<std::endl;
356 std::cout <<
"WARNING: In KLT Node, SIZE_BLOCK Node not specified, default value used : " <<
blockSize << std::endl;
358 std::cout <<
"klt : Block Size : "<<
blockSize <<std::endl;
360 if(!pyramid_lvl_node)
361 std::cout <<
"WARNING: In KLT Node, PYRAMID_LVL Node not specified, default value used : " <<
pyramidLevels << std::endl;
363 std::cout <<
"klt : Pyramid Levels : "<<
pyramidLevels <<std::endl;
377 bool height_node =
false;
378 bool width_node =
false;
379 bool u0_node =
false;
380 bool v0_node =
false;
381 bool px_node =
false;
382 bool py_node =
false;
392 for(xmlNodePtr dataNode = node->xmlChildrenNode; dataNode != NULL; dataNode = dataNode->next) {
393 if(dataNode->type == XML_ELEMENT_NODE){
394 std::map<std::string, int>::iterator iter_data= this->
nodeMap.find((
char*)dataNode->name);
395 if(iter_data !=
nodeMap.end()){
396 switch (iter_data->second){
432 std::cout <<
"WARNING: In CAMERA Node, HEIGHT Node not specified, default value used" << std::endl;
435 std::cout <<
"WARNING: In CAMERA Node, WIDTH Node not specified, default value used" << std::endl;
438 std::cout <<
"WARNING: In CAMERA Node, u0 Node not specified, default value used : " << this->
cam.
get_u0() << std::endl;
440 std::cout <<
"camera : u0 "<< this->
cam.
get_u0() <<std::endl;
443 std::cout <<
"WARNING: In CAMERA Node, v0 Node not specified, default value used : " << this->
cam.
get_v0() << std::endl;
445 std::cout <<
"camera : v0 "<< this->
cam.
get_v0() <<std::endl;
448 std::cout <<
"WARNING: In CAMERA Node, px Node not specified, default value used : " << this->
cam.
get_px() << std::endl;
450 std::cout <<
"camera : px "<< this->
cam.
get_px() <<std::endl;
453 std::cout <<
"WARNING: In CAMERA Node, py Node not specified, default value used : " << this->
cam.
get_py() << std::endl;
455 std::cout <<
"camera : py "<< this->
cam.
get_py() <<std::endl;
unsigned int winSize
Windows size.
void setMainTag(const std::string &tag)
void parse(const char *filename)
bool hasFarClipping
Is far clipping distance specified?
double minDist
Minimum distance between klt points.
unsigned int maskBorder
Border of the mask used on Klt points.
bool hasNearClipping
Is near clipping distance specified?
error that can be emited by ViSP classes.
double angleAppear
Angle to determine if a face appeared.
double xmlReadDoubleChild(xmlDocPtr doc, xmlNodePtr node)
double harrisParam
Harris free parameters.
double farClipping
Near clipping distance.
bool fovClipping
Fov Clipping.
double angleDisappear
Angle to determine if a face disappeared.
unsigned int maxFeatures
Maximum of Klt features.
void readMainClass(xmlDocPtr doc, xmlNodePtr node)
void read_camera(xmlDocPtr doc, xmlNodePtr node)
void initPersProjWithoutDistortion(const double px, const double py, const double u0, const double v0)
void read_face(xmlDocPtr doc, xmlNodePtr node)
double nearClipping
Near clipping distance.
unsigned int pyramidLevels
Number of pyramid levels.
int xmlReadIntChild(xmlDocPtr doc, xmlNodePtr node)
unsigned int blockSize
Block size.
unsigned int xmlReadUnsignedIntChild(xmlDocPtr doc, xmlNodePtr node)
void read_klt(xmlDocPtr doc, xmlNodePtr node)
double qualityValue
Quality of the Klt points.
virtual ~vpMbtKltXmlParser()
std::map< std::string, int > nodeMap
vpCameraParameters cam
Camera parameters.
void writeMainClass(xmlNodePtr node)
void parse(const std::string &filename)