GCC背后的故事&OpenCV相逢何必曾相识

学习目标一

用gcc生成静态库和动态库

阅读、理解和学习材料“用gcc生成静态库和动态库.pdf”和“静态库.a与.so库文件的生成与使用.pdf”,请在Linux系统(Ubuntu)下如实仿做一遍。
(1)第一步编辑生成例子程序hello.h、hello.c、main.c

在这里插入图片描述

#ifndef HELLO_H
#define HELLO_H
void hello(const char *name);
#endif//HELLO_H


#include<stdio.h>
void hello(const char *name)
{
printf("Hello%s!\n",name);
}


#include"hello.h"
int main()
{
hello("everyone");
return 0;
}


(2)生成hello.o文件:
在这里插入图片描述
(3)由.o文件创建静态库
在这里插入图片描述

学习目标二

GCC编译器背后的故事
创建work8目录、hello.c文件
在这里插入图片描述

#include<stdio.h>
int main(void){
printf("Hello,World!/n");
return 0;
}

编译过程
(1)预处理
① 将所有的#define 删除,并且展开所有的宏定义,并且处理所有的条件预编译指令,比如#if #ifdef #elif #else #endif 等。
② 处理#include 预编译指令,将被包含的文件插入到该预编译指令的位置。
③ 删除所有注释“//”和“/* */”。
④ 添加行号和文件标识,以便编译时产生调试用的行号及编译错误警告行号。
⑤ 保留所有的#pragma 编译器指令,后续编译过程需要使用。
(2)编译
编译过程是对预处理完的文件进行一系列的词法分析,语法分析,语义分析及优化后生成相应的汇编代码。
在这里插入图片描述
(3)汇编

gcc -C hello.s -o hello.o

在这里插入图片描述

学习目标三

安装 OpenCV

下载 OpenCV 3.4.11 数据包
国内快速下载地址:https://www.bzblog.online/wordpress/index.php/2020/03/09/opencvdownload/
安装:
解压安装包

unzip opencv-3.4.11.zip

进入解压后的文件

cd opencv-3.4.11

安装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  


在这里插入图片描述

2.播放视频

(1)创建 test3.cpp 文件

mkdir test3,cpp

#include <opencv2/opencv.hpp>
using namespace cv;

int main()
{
	//从摄像头读取视频
	VideoCapture capture("1.mp4");
	//循环显示每一帧
	while(1){
		Mat frame;//定义一个Mat变量,用于存储每一帧的图像
		capture >> frame;//读取当前帧
		if(frame.empty())//播放完毕,退出
			break;
		imshow("读取视频帧",frame);//显示当前帧
		waitKey(30);//掩饰30ms
	}
	system("pause");
	return 0;
}


(2)准备一个名为1.mp4的视频文件
(3)编译 test3.cpp 文件
在这里插入图片描述
(4)输出结果

./test3

(5)如果要求打开你硬盘上一个视频文件来播放,请问示例代码1第7行代码如何修改?
将代码改为:

VideoCapture capture("0");/1.mp4

(6)在第9行的while循环中,Mat是一个什么数据结构? 为什么一定要加一句waitKey延时代码,删除它行不行?

Mat是一个类。由两部分数据组成:矩阵头(包括矩阵尺寸、存储方法、存储地址等信息)和一个指向所有像素值的矩阵(根据所选存储方法不同,矩阵可以是不同的维数)的指针
WaitKey()函数的功能是是程序暂停,等待用户触发一个按键操作。不可以删除,若没有这句话,则显示图像的代码很快就执行过去了,所以要用WaitKey()来暂停
(7)此代码会在while循环中一直运行,你如果试图用鼠标关闭图像显示窗口,会发现始终关不掉。需要用键盘Ctrl+C 强制中断程序,非常不友好。如何改进?
设置一个固定的退出时间

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值