Ubuntu 14.04 Qt5 使用 GDB-ImageWatch 插件断点查看 opencv cv::Mat 矩阵

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/youngpan1101/article/details/72236744

本博文由 youngpan1101 出品,转载请注明出处。
文章链接: http://blog.csdn.net/youngpan1101/article/details/72236744
作者: 宋洋鹏(youngpan1101)
邮箱: [email protected]


简介

借助 GDB-ImageWatch 插件可以在断点调试过程中查看 cv::Mat 矩阵各像素值,windows 系统下的 visual studio IDE 也有该插件的相关教程,可参考 【VS2013中 Image Watch 插件的使用(OpenCV)】,这里介绍如何在 ubuntu 上通过 qt 5 来调用该插件,以方便做图像处理方面的断点调试。

安装 Qt creator 5.4.2

ref_1

  1. 查看操作系统位数

    $ sudo uname -m

    若显示 i686,表示 32 位操作系统;显示 x86_64,表示 64 位操作系统。

  2. 下载安装文件

    • 本系统是 64 位操作系统,下载对应的离线安装文件
      qt_download_link】【Baidu_Yun: qt-opensource-linux-x64-5.4.2.run
    • 修改权限

      $ chmod u+x qt-opensource-linux-x64-5.4.2.run
    • 通过命令安装

      $ ./qt-opensource-linux-x64-5.4.2.run
    • 然后弹出图形安装界面,自定义安装位置,其他的选择默认的安装即可。

    • 安装完成之后,可能缺少构建套件
      $ sudo apt-get install g++ vim make cmake 

安装 GDB-ImageWatch 插件

Github: gdb-imagewatch

  1. 运行环境

    扫描二维码关注公众号,回复: 3807965 查看本文章
    • ubuntu 14.04
    • qt creator 5.4.2
    • gdb 自带的 7.7.1
  2. 插件依赖项安装

    $ sudo apt-get install libpython3-dev libglew-dev python3-numpy python3-pip qt-sdk texinfo libfreetype6-dev libeigen3-dev

    安装过程中可能会出现因为软件源的问题无法正常完成安装,我原来163的源就会出现不能正常安装的问题,然后换了 tsinghua 的源,重新运行上面的命令即可。
    ubuntu_qt_gdb_imagewatch_01_watermark

  3. 克隆安装包到自定义路径下【Baidu_Yun_Download】:

    $ git clone https://github.com/csantosbh/gdb-imagewatch
  4. 编译 image-watch

    $ cd <dir-to-gdb-imagewatch>
    $ mkdir build 
    $ cd build
    $ qmake ..
    $ make -j4

    make 过程中会出现下面的错误:

    修改 [dir-to-gdb-imagewatch]/src/buffer.cpp 文件:

      Line 8: constexpr float Buffer::no_ac_params[8] = {1.0, 1.0, 1.0, 1.0, 0, 0, 0, 0};
      改成
              const float Buffer::no_ac_params[8] = {1.0, 1.0, 1.0, 1.0, 0, 0, 0, 0};

    继续运行 make 命令

    $ make -j4
    $ make install 

建立 cmake 测试工程

  1. CMakeLists.txt (这里使用的是 OpenCV 3.2 ,安装教程可参考 【 Ubuntu 14.04 安装 OpenCV-3.2.0】)

        # 声明要求的 cmake 最低版本
        cmake_minimum_required(VERSION 2.8)
    
        # 声明一个 DisplayImage 工程
        project( DisplayImage )
    
        # 设置编译模式 (Debug/Release/...)
        set(CMAKE_BUILD_TYPE "Debug")
    
        # 寻找OpenCV库
        find_package( OpenCV 3.2 REQUIRED )
    
        # 添加头文件
        include_directories( ${OpenCV_INCLUDE_DIRS} )
    
        # 生成可执行二进制文件
        add_executable( DisplayImage DisplayImage.cpp )
    
        # 链接OpenCV库
        target_link_libraries( DisplayImage  ${OpenCV_LIBS} )
  2. DisplayImage.cpp

     #include <opencv2/core/core.hpp>
     #include <opencv2/highgui/highgui.hpp>
     #include <opencv2/imgproc/imgproc.hpp>
    
     #include <iostream>
    
     using namespace std;
     using namespace cv;
    
     int main(int argc, char** argv)  
     {        
         cv::Mat matTmp = cv::imread("../xiaowu_robot.jpg");
         // 若读入的是 16 位的 png 深度图,则用下面的 cv::imread 加载方式
         //cv::Mat matTmp = cv::imread("../xiaowu_robot.png", CV_LOAD_IMAGE_UNCHANGED);
    
         cv::namedWindow("Image", 1);
    
         if(matTmp.empty()){
             std::cout << "can not load image" << std::endl;
             return -1;
         }
    
         cv::imshow("Image", matTmp);
    
         cv::waitKey(0);
    
         return 1;
    }  
  3. 编译, 运行

    $ cd build
    $ cmake ..
    $ make 
    $ sudo ./DisplayImage

将工程导入 Qt Creator 并使用 ImageWatch 进行调试

  1. 打开工程(选中该工程的 CMakeLists.txt ,点击 Open

  2. 设定用于编译的 build 文件夹路径

  3. 设定 cmake 构建过程中的形参(因为 CMakeLists.txt 文件里有 set(CMAKE_BUILD_TYPE “Debug”) ,这里的 Auguments 可以不填,否则需要输入 -DCMAKE_BUILD_TYPE=DEBUG

  4. 菜单栏 >> Tools >> Options >> Debugger >> GDB >> Extra Debugging Helpers 设定(文件是之前 ImageWatch 插件 build 文件夹下的 gdb-imagewatch.py

  5. 放置断点,进行调试

  6. cv::Mat 矩阵的 RGB 是以 BGR 进行存储的,gdb-ImageWatch 断点加载的图像是按 BGR 来显示的,所以和原图会有色差。

  7. 若 Qt Creator 运行带参数的程序(下图的设置表示输入: $ ./DisplayImage text_for_test)

  8. 基本的调试操作到此结束。

使用桌面快捷方式开启 QtCreator

  1. 创建 startQt.sh 脚本(本系统的密码是 “12345”) 【 具体命令解释参考:Linux expect 用法

     #!/usr/bin/expect
     set timeout 5
     spawn sudo /home/hwj/IDE/Qt5.4.2/Tools/QtCreator/bin/qtcreator
     expect "password"
     send "12345\r"
     interact
  2. 赋予脚本文件执行权限

    $ sudo chmod +x startQt.sh
  3. 使用命令行创建桌面快捷方式

    • 在 /usr/share/applications 创建 QtCreator_5.4.2.desktop(Exec=/home/hwj/IDE/Qt5.4.2/startQt.sh 就是前面新建的 startQt.sh 的路径,这里推荐 icon 制作网站
      [Desktop Entry]
      Encoding=UTF-8
      Name=QtCreator_v5.4.2
      Comment=QtCreator IDE
      Exec=/home/hwj/IDE/Qt5.4.2/startQt.sh
      Icon=/home/hwj/IDE/Qt5.4.2/QtCreator_5.4.2-2.ico
      Terminal=false
      StartupNotify=true
      Type=Application
      Categories=Application;
  4. 开启 QtCreator

    • 键盘 WIN 键,然后搜索 QtCreator_v5.4.2 并将其图标拖拽到桌面即可。
    • 双击图标就可以打开 QtCreator, enjoy it!

猜你喜欢

转载自blog.csdn.net/youngpan1101/article/details/72236744