void run_cpp_recongition(const std::string& classifier_path, const std::string& image_path) { PattCutLib::RecognitionController controller; try { auto classifier_id = controller.load_classifier_from_file(classifier_path); std::cout << "Classifier loaded. Classifier id = " << classifier_id.id() << std::endl; int time_cum = 0; for (int i = 0; i < 10; i++) { auto res = controller.perform_recognition(image_path); std::cout << "total time: " << res.total_time_ms() << std::endl; if (res.best_classifier_id() > 0) { std::cout << "recognized!" << std::endl; } for (int i = 0; i < res.result_per_classifier(0).areas().size(); i++) { auto cur_area = res.result_per_classifier(0).areas(i); std::cout << "veracity: " << cur_area.veracity() << ", wnd_count: " << cur_area.merged_window_count() << ", area: [" << cur_area.rect_x() << ", " << cur_area.rect_y() << "; " << cur_area.rect_width() << ", " << cur_area.rect_height() << "]" << std::endl; } time_cum += res.total_time_ms(); } std::cout << "accumulated time: " << time_cum / 10.0 << std::endl; } catch (PattCutLib::RecognitionException& exc) { std::cout << "Error: " << exc.what() << std::endl; } }
void gui_widget_screen_visible_position(gui_widget_t* widget, point_t* point, rect_t* rect) { if(point == NULL && rect == NULL) return; point_t widget_point; gui_widget_position(widget, &widget_point); rect_t widget_rect; gui_widget_rect(widget, &widget_rect); rect_t parent_rect; gui_object_t* parent = gui_object_parent(GUI_OBJECT(widget)); while(parent){ gui_widget_rect(GUI_WIDGET(parent), &parent_rect); widget_point.x += rect_x(&parent_rect); widget_point.y += rect_y(&parent_rect); widget_rect.left += parent_rect.left; widget_rect.top += parent_rect.top; widget_rect.right += parent_rect.left; widget_rect.bottom += parent_rect.top; widget_rect.left = MAX(widget_rect.left, parent_rect.left); widget_rect.top = MAX(widget_rect.top, parent_rect.top); widget_rect.right = MIN(widget_rect.right, parent_rect.right); widget_rect.bottom = MIN(widget_rect.bottom, parent_rect.bottom); parent = gui_object_parent(parent); } if(point) point_copy(point, &widget_point); if(rect) rect_copy(rect, &widget_rect); }
void gui_widget_set_x(gui_widget_t* widget, graphics_pos_t x) { gui_widget_move(widget, x, rect_y(&widget->rect)); }