在Ubuntu系统上GDB调试和opencv的简单用法

一、GDB的简单运行调试

GDB的作用与使用

(1)作用

(1)设置断点使程序停住
(2) 监视或修改程序中变量的值
(3)跟踪代码执行过程

(2)使用

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二、OpenCV的安装与练习

(1)安装

解压并安装

下载OpenCV放到主目录下
在这里插入图片描述
对其进行解压,输入命令:

unzip opencv-3.4.1.zip

在这里插入图片描述
解压成功后进入文件输入:

cd opencv-3.4.1

在这里插入图片描述

依赖库和cmake的安装

接着安装依赖库和cmake输入代码:

sudo apt install cmake

在这里插入图片描述
安装完cmake之后进行依赖库的安装输入:

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

在这里插入图片描述
出现无法选中这时输入:

sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main"
sudo apt update
sudo apt install libjasper1 libjasper-dev

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
等啊等,等啊等,终于好了
在这里插入图片描述
在这里插入图片描述

编译

cmake和依赖库安装好之后,
我们开始编译
先创建一个编译文件夹并且进入文件夹内。
输入命令:

mkdir my_build_dir
cd my_build_dir
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local..
sudo make 

又要开始等咯!等了好久好久结果终于出来了,
在这里插入图片描述
在这里插入图片描述
终于完了啊!

配置opencv库以及配置bash

然后输入命令:

sudo make install
sudo gedit /etc/ld.so.conf.d/opencv.conf 

在这里插入图片描述
在这里插入图片描述
保存回到命令行界面
继续执行一下命令使配置生效

sudo ldconfig                                  
sudo gedit /etc/bash.bashrc  

在文件末尾添加

PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig  
export PKG_CONFIG_PATH 

在这里插入图片描述
保存回到终端
输入:

source /etc/bash.bashrc 
sudo updatedb  

在这里插入图片描述
所有的配置完成,接下来使用opencv。

(2)实际操作

图像处理

创建文件

回到opencv-3.4.1下创建并进入mytest文件夹,在mytest文件夹下创建一个test.cpp文件并写入代码

#include <opencv2/highgui.hpp>
#include <opencv2/opencv.hpp>
using namespace cv;
using namespace std;
int main(int argc, char** argv)
{
    
    
	CvPoint center;
    double scale = -3; 

	IplImage* image = cvLoadImage("test1.jpg");
	argc == 2? cvLoadImage(argv[1]) : 0;
	
	cvShowImage("Image", image);
	
	
	if (!image) return -1; 	center = cvPoint(image->width / 2, image->height / 2);
	for (int i = 0;i<image->height;i++)
		for (int j = 0;j<image->width;j++) {
    
    
			double dx = (double)(j - center.x) / center.x;
			double dy = (double)(i - center.y) / center.y;
			double weight = exp((dx*dx + dy*dy)*scale);
			uchar* ptr = &CV_IMAGE_ELEM(image, uchar, i, j * 3);
			ptr[0] = cvRound(ptr[0] * weight);
			ptr[1] = cvRound(ptr[1] * weight);
			ptr[2] = cvRound(ptr[2] * weight);
		}

	Mat src;Mat dst;
	src = cvarrToMat(image);
	cv::imwrite("test.png", src);

    cvNamedWindow("test",1);  	imshow("test", src);
	 cvWaitKey();
	 return 0;
}

}

在这里插入图片描述
在这里插入图片描述
加入图片到mytest文件夹
在这里插入图片描述

编译文件

输入命令:

g++ test.cpp -o test `pkg-config --cflags --libs opencv`
./test

出现错误!
在这里插入图片描述
这时输入:

sudo apt-get install libcanberra-gtk-module

更新安装包
在这里插入图片描述

运行结果

接着再输入:

g++ test.cpp -o test `pkg-config --cflags --libs opencv`
./test

结果出现
在这里插入图片描述

OpenCV使用摄像头显示视频

创建文件

创建一个test1.cpp文件,代码:

#include<opencv2/opencv.hpp>
using namespace cv;
int main()
{
    
            
        VideoCapture capture(0);			 //从摄像头读取视频        
        while (1)							 //循环显示每一帧
        {
    
    
                Mat frame;                   //定义一个Mat变量,用于存储每一的图像
                capture>>frame;              //读取当前帧
                imshow("读取视频帧", frame); //显示当前顿
                waitKey(30);                 //延时30m
        }
        system("pause");
        return 0;
}

在这里插入图片描述
接着输入:

g++ test1.cpp -o test1 `pkg-config --cflags --libs opencv`   //创建可执行文件
./test1                                                      //执行文件

编译文件

虚拟机没有连接摄像头,让我们来连接摄像头,OK,电脑成功死机,重启走一波,,,,,,重启了N次,还是死机,可能是我电脑不行。完成不了这个OpenCV的显示视频。

运行结果

还没有成功,电脑感觉重启坏了,开机现在要一分钟了,再也回不到以前开机7秒的年代了。

猜你喜欢

转载自blog.csdn.net/qq_45321687/article/details/109362154