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

来源:互联网 发布:linux shell while循环 编辑:程序博客网 时间:2024/06/05 00:20

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


简介

借助 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. 运行环境

    • 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-8Name=QtCreator_v5.4.2Comment=QtCreator IDEExec=/home/hwj/IDE/Qt5.4.2/startQt.shIcon=/home/hwj/IDE/Qt5.4.2/QtCreator_5.4.2-2.icoTerminal=falseStartupNotify=trueType=ApplicationCategories=Application;
  4. 开启 QtCreator

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