diff --git a/executables/visio/driver/Calib_HSV/HSV/include/parametres.h b/executables/visio/driver/Calib_HSV/HSV/include/parametres.h index 5e8772e..dac19ea 100644 --- a/executables/visio/driver/Calib_HSV/HSV/include/parametres.h +++ b/executables/visio/driver/Calib_HSV/HSV/include/parametres.h @@ -8,5 +8,6 @@ using namespace std; void getconfig(Config &config, string direct); +extern string direct_abs, direct_m, direct_CDhsv, direct_Lhsv, direct_Nhsv, direct_config; #endif // PARAMETRES_H diff --git a/executables/visio/driver/Calib_HSV/HSV/main.cpp b/executables/visio/driver/Calib_HSV/HSV/main.cpp index 1f6f6d4..6d420c8 100644 --- a/executables/visio/driver/Calib_HSV/HSV/main.cpp +++ b/executables/visio/driver/Calib_HSV/HSV/main.cpp @@ -10,14 +10,21 @@ #include #include "include/config.h" +#include +#include +#include +#define MAXBUFSIZE 1024 + + using namespace std; Config config; +string direct_abs, direct_m, direct_CDhsv, direct_Lhsv, direct_Nhsv, direct_config; void validerCD() { int h, s, v, h2, s2, v2; - cv::FileStorage fCD("../../CDhsv.yml", cv::FileStorage::WRITE); + cv::FileStorage fCD(direct_CDhsv, cv::FileStorage::WRITE); h = cv::getTrackbarPos("h_cd", "Calib_cd"); s = cv::getTrackbarPos("s_cd", "Calib_cd"); v = cv::getTrackbarPos("v_cd", "Calib_cd"); @@ -38,7 +45,7 @@ void validerCD() void validerL() { - cv::FileStorage fL("../../Lhsv.yml", cv::FileStorage::WRITE); + cv::FileStorage fL(direct_Lhsv, cv::FileStorage::WRITE); int h, s, v, h2, s2, v2; h = cv::getTrackbarPos("h_L", "Calib_Lingot"); s = cv::getTrackbarPos("s_L", "Calib_Lingot"); @@ -61,7 +68,7 @@ void validerL() void validerN() { int h, s, v, h2, s2, v2; - cv::FileStorage fN("../../Nhsv.yml", cv::FileStorage::WRITE); + cv::FileStorage fN(direct_Nhsv, cv::FileStorage::WRITE); h = cv::getTrackbarPos("h_N", "Calib_CDnoir"); s = cv::getTrackbarPos("s_N", "Calib_CDnoir"); v = cv::getTrackbarPos("v_N", "Calib_CDnoir"); @@ -180,7 +187,27 @@ void Calib(int &h, int &s, int &v, int &h2, int &s2, int &v2, cv::Mat &warped, i int main(int argc, char** argv) { - getconfig(config, "../../config.yml"); + char buf[ MAXBUFSIZE ]; + int count; + count = readlink( "/proc/self/exe", buf, MAXBUFSIZE ); + if ( count < 0 || count >= MAXBUFSIZE ) { + printf( "Failed to get absolute path\n" ); + } + direct_abs = buf; + string::size_type end = direct_abs.find_last_of('/'); + direct_abs.erase(end); + cerr<<"absolute path is: "<> h_cd; fCDr["s_cd"] >> s_cd; fCDr["v_cd"] >> v_cd; @@ -234,7 +261,7 @@ int main(int argc, char** argv) fCDr["s2_cd"] >> s2_cd; fCDr["v2_cd"] >> v2_cd; fCDr.release(); - cv::FileStorage fLr("../../Lhsv.yml", cv::FileStorage::READ); + cv::FileStorage fLr(direct_Lhsv, cv::FileStorage::READ); fLr["h_L"] >> h_L; fLr["s_L"] >> s_L; fLr["v_L"] >> v_L; @@ -242,7 +269,7 @@ int main(int argc, char** argv) fLr["s2_L"] >> s2_L; fLr["v2_L"] >> v2_L; fLr.release(); - cv::FileStorage fNr("../../Nhsv.yml", cv::FileStorage::READ); + cv::FileStorage fNr(direct_Nhsv, cv::FileStorage::READ); fNr["h_N"] >> h_N; fNr["s_N"] >> s_N; fNr["v_N"] >> v_N; @@ -278,7 +305,7 @@ int main(int argc, char** argv) if(recharger_Matrix_Perspective) { - cv::FileStorage fs2("../../warpMatrix.yml", cv::FileStorage::READ); + cv::FileStorage fs2(direct_m, cv::FileStorage::READ); fs2["warpMatrix"] >> warpMatrix; warpPerspective(image, warped, warpMatrix, image.size(), cv::INTER_LINEAR, cv::BORDER_CONSTANT); cv::imshow( "Camera", warped); diff --git a/executables/visio/driver/Calib_HSV/HSV/src/perspective.cpp b/executables/visio/driver/Calib_HSV/HSV/src/perspective.cpp index 1df531e..e483d3c 100644 --- a/executables/visio/driver/Calib_HSV/HSV/src/perspective.cpp +++ b/executables/visio/driver/Calib_HSV/HSV/src/perspective.cpp @@ -45,7 +45,7 @@ void ChessboardFinder(cv::Mat& image, cv::Mat& gray, cv::Mat& warpMatrix, //calculate warpmatrix getvertices( corners, src_vertices, dst_vertices, board_sz.width, board_sz.height); warpMatrix = cv::getPerspectiveTransform(src_vertices, dst_vertices); - cv::FileStorage fs("../../warpMatrix.yml", cv::FileStorage::WRITE); + cv::FileStorage fs(direct_m, cv::FileStorage::WRITE); fs << "warpMatrix" << warpMatrix; fs.release(); //warpok = true; diff --git a/executables/visio/driver/HSVbande.yml b/executables/visio/driver/HSVbande.yml deleted file mode 100644 index 51e89a7..0000000 --- a/executables/visio/driver/HSVbande.yml +++ /dev/null @@ -1,7 +0,0 @@ -%YAML:1.0 -h_cd: 20 -s_cd: 30 -v_cd: 250 -h2_cd: 50 -s2_cd: 66 -v2_cd: 255 diff --git a/executables/visio/driver/Visio_Main.cpp b/executables/visio/driver/Visio_Main.cpp index e148dd0..0a76ce4 100644 --- a/executables/visio/driver/Visio_Main.cpp +++ b/executables/visio/driver/Visio_Main.cpp @@ -15,6 +15,14 @@ #include #include "include/config.h" +#include + +#include +#include + +#define MAXBUFSIZE 1024 + + using namespace std; cv::Vec3b hsv_selected; @@ -123,7 +131,16 @@ int main(int argc, char** argv) cm->start(); //get current directory - direct_abs = argv[0]; + char buf[ MAXBUFSIZE ]; + int count; + count = readlink( "/proc/self/exe", buf, MAXBUFSIZE ); + if ( count < 0 || count >= MAXBUFSIZE ) { + printf( "Failed to get absolute path\n" ); + } + + buf[ count ] = '\0'; + + direct_abs = buf; std::string::size_type end = direct_abs.find_last_of('/'); direct_abs.erase(end); cerr<<"absolute path is: "<