#include #include #include #include #include #include #include "argpopt.h" #include "unwrap.h" #include "bgremoval.h" #include "normalize.h" #include "log.h" #include "charuco.h" #include "harris.h" void cd_to_exe_dir( char *argv[] ) { std::string path = argv[0]; int ii = path.length(); while ( !( path[ii] == '/' || path[ii] == '\\' ) && ii > 0 ) { ii--; } path.erase( ii, 100 ); chdir( path.c_str() ); } std::vector loadImages(char** fileNames) { std::vector images; for(size_t i = 0; fileNames[i]; ++i) { cv::Mat tmpImage = cv::imread(fileNames[i]); if(tmpImage.data)images.push_back(tmpImage); else std::cout<<"can not read image "< inImages = loadImages(config.inFileNames); if(inImages.empty()) { Log(Log::ERROR)<<"Input images must be provided!"; return -1; } if(config.verbose) { cv::namedWindow( "Viewer", cv::WINDOW_NORMAL ); cv::resizeWindow("Viewer", 960, 500); } if(config.maps.empty()) { cv::Mat mask; if(config.verbose) { cv::imshow( "Viewer", inImages[0] ); cv::waitKey(0); } if(!config.bg.empty()) { cv::Mat bg = cv::imread(config.bg); if(bg.data) { createMask(inImages[0], mask, bg); if(config.verbose) { cv::Mat masked; inImages[0].copyTo(masked, mask); cv::imshow( "Viewer", masked ); cv::waitKey(0); } } else Log(Log::WARN)<<"can not read background image from "< points; std::vector coordiantes; if(config.harris) { points = harrisDetectPoints(inImages[0], mask); } else { points = detectCharucoPoints(inImages[0], &coordiantes); } Log(Log::INFO)<<"Found "<>xMat; fs["ymat"]>>yMat; cv::Mat norm; if(!config.norm.empty()) { cv::Mat tmp = cv::imread(config.norm); if(!tmp.data) { Log(Log::WARN)<<"could not open normalize file " <