您的位置:首页 > 编程语言 > Qt开发

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

2017-05-16 15:39 1371 查看
本博文由 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

查看操作系统位数

$ sudo uname -m


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

下载安装文件

本系统是 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

运行环境

ubuntu 14.04

qt creator 5.4.2

gdb 自带的 7.7.1

插件依赖项安装

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


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



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

$ git clone https://github.com/csantosbh/gdb-imagewatch[/code] 
编译 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 测试工程



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} )


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;
}


编译, 运行

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


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

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



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



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



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



放置断点,进行调试



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



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



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

使用桌面快捷方式开启 QtCreator

创建 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


赋予脚本文件执行权限

$ sudo chmod +x startQt.sh


使用命令行创建桌面快捷方式

在 /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;


开启 QtCreator

键盘 WIN 键,然后搜索 QtCreator_v5.4.2 并将其图标拖拽到桌面即可。

双击图标就可以打开 QtCreator, enjoy it!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ubuntu qt gdb imagewatch debug