zoukankan      html  css  js  c++  java
  • visp库中解决lapack库的问题

    解决的办法是——绕过去,不要用这个库:

    使用中发现如下代码抛出异常:

      //vpTemplateTracker.cpp
      try {
        initHessienDesired(I);
        ptTemplateSuppPyr[0] = ptTemplateSupp;
        ptTemplateCompoPyr[0] = ptTemplateCompo;
        HdesirePyr[0] = Hdesire;
        HLMdesirePyr[0] = HLMdesire;
        HLMdesireInversePyr[0] = HLMdesireInverse;
      } catch (const vpException &e) {
        ptTemplateSuppPyr[0] = ptTemplateSupp;
        ptTemplateCompoPyr[0] = ptTemplateCompo;
        HdesirePyr[0] = Hdesire;
        HLMdesirePyr[0] = HLMdesire;
        HLMdesireInversePyr[0] = HLMdesireInverse;
        throw(e);
      }  

    调用栈是:

    #5  0x00007ffff7b33b93 in __cxa_throw () from /lib64/libstdc++.so.6
    #6  0x0000000000416b80 in vpTemplateTracker::initHessienDesiredPyr (this=0x7fffffffd470, I=...)
        at /data/ahfu/visp/modules/tracker/tt/src/vpTemplateTracker.cpp:756
    #7  0x0000000000416603 in vpTemplateTracker::initFromPoints (this=0x7fffffffd470, I=..., v_ip=..., 
        delaunay=false) at /data/ahfu/visp/modules/tracker/tt/src/vpTemplateTracker.cpp:704
    #8  0x0000000000406a47 in main (argc=1, argv=0x7fffffffe358) at test.cpp:148  

    不太清楚究竟为何抛异常,于是注释掉try catch,重新编译链接执行。

    看到了如下异常信息:

    #5  0x00007ffff7b33b93 in __cxa_throw () from /lib64/libstdc++.so.6
    #6  0x00000000004519b9 in vpMatrix::inverseByLULapack (this=0x7fffffffc390)
        at /data/ahfu/visp/modules/core/src/math/matrix/vpMatrix_lu.cpp:385
    #7  0x00000000004514ff in vpMatrix::inverseByLU (this=0x7fffffffc390)
        at /data/ahfu/visp/modules/core/src/math/matrix/vpMatrix_lu.cpp:133
    #8  0x000000000040d477 in vpTemplateTrackerSSDInverseCompositional::initCompInverse (
        this=0x7fffffffd470)
        at /data/ahfu/visp/modules/tracker/tt/src/ssd/vpTemplateTrackerSSDInverseCompositional.cpp:79
    #9  0x000000000040d7c3 in vpTemplateTrackerSSDInverseCompositional::initHessienDesired (
        this=0x7fffffffd470, I=...)
        at /data/ahfu/visp/modules/tracker/tt/src/ssd/vpTemplateTrackerSSDInverseCompositional.cpp:103
    #10 0x00000000004167b1 in vpTemplateTracker::initHessienDesiredPyr (this=0x7fffffffd470, I=...)
        at /data/ahfu/visp/modules/tracker/tt/src/vpTemplateTracker.cpp:744
    #11 0x0000000000416603 in vpTemplateTracker::initFromPoints (this=0x7fffffffd470, I=..., v_ip=..., 
        delaunay=false) at /data/ahfu/visp/modules/tracker/tt/src/vpTemplateTracker.cpp:704
    #12 0x0000000000406a47 in main (argc=1, argv=0x7fffffffe358) at test.cpp:148  

    更换了最新的lapack库,仍然无法解决。

    查看visp/modules/core/src/math/matrix/vpMatrix_lu.cpp 发现了这样的注释:

        111   std::cout << "Inverse by LU ";
        112 #if defined(VISP_HAVE_LAPACK)
        113   std::cout << "(using Lapack)";
        114 #elif defined(VISP_HAVE_EIGEN3)
        115   std::cout << "(using Eigen3)";
        116 #elif (VISP_HAVE_OPENCV_VERSION >= 0x020101)
        117   std::cout << "(using OpenCV)";
        118 #elif defined (VISP_HAVE_GSL)
        119   std::cout << "(using GSL)";
        120 #endif  

    说明编译选项可以选择不同的库。

    于是:

    cd /data/ahfu/visp/

    mkdir build

    cd build

    ccmake ..  #在界面中把 WITH_LAPACK设置为OFF

    cmake ..

    make -j

    make install

    重新编译测试程序运行,一切正常。

  • 相关阅读:
    使用.NET中的XML注释(二) -- 创建帮助文档入门篇
    使用.NET中的XML注释(一) -- XML注释标签讲解
    C# 代码注释和Config文件中,特殊符号的书写方法。
    C# 代码注释规范文档
    智能语音录制程序——窃听神器(源码放送!)
    基于 Winform + DotNetBar 写的股市行情助手
    C#自动弹出窗口并定时自动关闭
    C#关闭子窗口而不释放子窗口对象的问题解决
    C#中将dateTimePicker初始值设置为空
    c#多线程实现定时执行代码与lock锁操作
  • 原文地址:https://www.cnblogs.com/ahfuzhang/p/10274043.html
Copyright © 2011-2022 走看看