고상slam14강 중ch7 코드 중 일부 수정

2551 단어 slam

카탈로그

  • 문제1:opencv버전 문제, 컴파일 오류.
  • 문제2:./ch7/pose_estimation_3d2d.cpp:43:35: error: ‘CV_LOAD_IMAGE_COLOR’ was not declared in this scope
  • 문제3: 컴파일 2d2d.cpp시 오류 보고: CVFM_8POINT was not declared in this scope
  • 문제4: 이것은 g2o 라이브러리 업데이트로 인한 용법 변화
  • 주요 참조:
  • 장절: 고상slam14강중ch7사용시스템: Ubuntu18.04,opencv4.1.0

    문제1:opencv 버전 문제, 컴파일 오류.


    해결 방법: CMakeLists에서txt에서findpackage(OpenCV3.0 REQUIRED)의 3.0을 해당 버전으로 변경하거나 3.0을 직접 제거

    문제2:.../ch7/poseestimation_3d2d.cpp:43:35: error: ‘CV_LOAD_IMAGE_COLOR’ was not declared in this scope


    해결 방법: 모든 것을.cpp 파일에 나타나는 CVLOAD_IMAGE_xxxx는 대응하는 flag값으로 대체하고 구체적인 대체값은 다음과 같다.
       CV_LOAD_IMAGE_UNCHANGED  = -1 ( = cv::IMREAD_UNCHANGED),
       CV_LOAD_IMAGE_GRAYSCALE 	= 0  ( = cv::IMREAD_GRAYSCALE),
       CV_LOAD_IMAGE_COLOR     	= 1  ( = cv::IMREAD_COLOR),
       CV_LOAD_IMAGE_ANYDEPTH   = 2  ( = cv::IMREAD_ANYDEPTH),
    

    참고: poseestimation_2d2d.cpp;pose_estimation_3d3d.cpp에서도 마찬가지로 수정되었습니다.

    문제3: 2d2d를 컴파일합니다.cpp시 오류 보고: CVFM_8POINT was not declared in this scope


    해결 방법: CV제거하고 재번역하면 통과할 수 있다.(이곳은 Learning OpenCV3에서findFundamentalMat () 함수에서method 선택에 대한 설명이 있습니다)

    문제4: 이것은 g2o 라이브러리 업데이트로 인한 사용법 변경입니다.


    pose 실행estimation_3d2d.cpp(3d3d와 마찬가지로 아래와 같음) 시 오류는 다음과 같습니다.
    error: no matching function for call to ‘g2o::BlockSolver<:blocksolvertraits> >::BlockSolver(g2o::BlockSolver<:blocksolvertraits> >::LinearSolverType*&)’DirectBlock* solver_ptr = new DirectBlock ( linearSolver );
    
    error: no matching function for call to ‘g2o::OptimizationAlgorithmLevenberg::OptimizationAlgorithmLevenberg(Block*&)’
    

    원본 코드:
    Block* solver_ptr = new Block( linearSolver );      //       
    
    g2o::OptimizationAlgorithmLevenberg* solver = new g2o::OptimizationAlgorithmLevenberg( solver_ptr );
    

    수정은 다음과 같습니다.
    Block* solver_ptr = new Block( unique_ptr<:linearsolvertype>(linearSolver) );      //       
    
    g2o::OptimizationAlgorithmLevenberg* solver = new g2o::OptimizationAlgorithmLevenberg( unique_ptr(solver_ptr) );
    

    주요 참조:

  • https://blog.csdn.net/weixin_43988000/article/details/84856917
  • https://blog.csdn.net/unlimitedai/article/details/86546368
  • https://blog.csdn.net/robinhjwy/article/details/78084210
  • Kaehler A, et al. Learning OpenCV 3
  • 좋은 웹페이지 즐겨찾기