目录

gdb的简单调试

Ubantu下Opencv3.x 图像开源处理库的安装和初步使用

linux下编写一个打开图片进行特效显示的代码

编写一个打开摄像头显示处理视频的程序代码

参考资料

一、gdb的简单调试

  1. gdb调试举例

首先在虚拟机中用文档编辑器创建一个.c文件,输入以下代码如图:

启用gpu调试层开启有什么用 使用gpu调试层_启用gpu调试层开启有什么用


然后用gcc -o -1 -q 1.c进行调试:

启用gpu调试层开启有什么用 使用gpu调试层_程序代码_02


然后用(gdb) l指令显示代码及行号:

启用gpu调试层开启有什么用 使用gpu调试层_opencv_03


然后用(gdb)b 行号 来通过行号设置断点,

启用gpu调试层开启有什么用 使用gpu调试层_启用gpu调试层开启有什么用_04


也可以用(gdb)b 函数名通过函数名设置断点。

启用gpu调试层开启有什么用 使用gpu调试层_启用gpu调试层开启有什么用_05


可以使用(gdb)info b查看所有断点信息。

启用gpu调试层开启有什么用 使用gpu调试层_启用gpu调试层开启有什么用_06


(gdb)run执行程序

启用gpu调试层开启有什么用 使用gpu调试层_启用gpu调试层开启有什么用_07


发现在16行的时候报错了。用(gdb)whatis iNum查看iNum的类型。

启用gpu调试层开启有什么用 使用gpu调试层_linux_08


(gdb)c继续执行

启用gpu调试层开启有什么用 使用gpu调试层_opencv_09

(gdb)p iNum打印iNum的值

启用gpu调试层开启有什么用 使用gpu调试层_linux_10

(gdb)s语句进行单步调试

启用gpu调试层开启有什么用 使用gpu调试层_启用gpu调试层开启有什么用_11

2.段错误调试

建一个文档,输入以下代码:

启用gpu调试层开启有什么用 使用gpu调试层_opencv_12


用gdb调试发现是段错误:

启用gpu调试层开启有什么用 使用gpu调试层_程序代码_13


(gdb) print pStr 打印pStr的值,

启用gpu调试层开启有什么用 使用gpu调试层_linux_14

设置断点

启用gpu调试层开启有什么用 使用gpu调试层_程序代码_15

重新运新程序,

启用gpu调试层开启有什么用 使用gpu调试层_opencv_16

(gdb) set variable 修改变量的值

启用gpu调试层开启有什么用 使用gpu调试层_启用gpu调试层开启有什么用_17

单步执行

启用gpu调试层开启有什么用 使用gpu调试层_opencv_18

二、Ubantu下Opencv3.x 图像开源处理库的安装和初步使用

1.opencv下载
可用wget https://github.com/opencv/opencv/archive/3.4.0.zip进行源码的下载。
2.解压源码

unzip 3.4.0.zip

3.安装cmake和依赖库

sudo apt-get install cmake
sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg.dev libtiff5.dev libswscale-dev libjasper-dev

安装完cmake后进行文件夹配置:

mkdir my_build_dir
cd my_build_dir

启用gpu调试层开启有什么用 使用gpu调试层_程序代码_19


执行命令,进行编译:

启用gpu调试层开启有什么用 使用gpu调试层_opencv_20


下载完成

启用gpu调试层开启有什么用 使用gpu调试层_参考资料_21


执行命令sudo make install ,sudo make install 执行完毕后OpenCV编译过程就结束了.

三、linux下编写一个打开图片进行特效显示的代码

在opencv-3.4.1下新建文件夹mytest,创建test.cpp。

启用gpu调试层开启有什么用 使用gpu调试层_启用gpu调试层开启有什么用_22

在test中方输入以下代码:

启用gpu调试层开启有什么用 使用gpu调试层_opencv_23


保存并编译:

gcc test.cpp -o test `pkg-config --cflags --libs opencv`

即可运行成功了:

启用gpu调试层开启有什么用 使用gpu调试层_opencv_24


使用pkg-config时,选项–cflags 它是用来指定程序在编译时所需要头文件所在的目录,选项 –libs则是指定程序在链接时所需要的动态链接库的目录。

四、编写一个打开摄像头显示处理视频的程序代码

启用gpu调试层开启有什么用 使用gpu调试层_opencv_25

注意事项:

  1. 如果要打开一个硬盘上的视频,就把VideoCapture(0)中的0改成视频的路径。
  2. Mat是一个类。由两部分数据组成:矩阵头(包括矩阵尺寸、存储方法、存储地址等信息)和一个指向所有像素值的矩阵(根据所选存储方法不同,矩阵可以是不同的维数)的指针
  3. 此代码会在while循环中一直运行,你如果试图用鼠标关闭图像显示窗口,会发现始终关不掉。需要用键盘Ctrl+C 强制中断程序,非常不友好。waitKey延时越长 fps越小 出现跳帧 摄像头显示变卡,故要有一定的延时,可以加一个break代码,如if(ch == 27) break。

五、参考资料