在Ubuntu系统虚拟机下使用opencv完成基本操作

本文介绍了在Ubuntu虚拟机中使用OpenCV进行图像处理的基本操作,包括编写代码打开图片并应用特效,利用OpenCV库创建程序打开摄像头并压缩视频,以及如何操作本地视频文件。在程序中,waitKey()函数用于延迟显示,确保imshow()的正常工作,删除会导致窗口无响应。通过在while循环中添加条件判断,可以实现按Esc键退出程序,提高用户体验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在Ubuntu系统虚拟机下使用opencv完成基本操作


一、编写一个打开图片进行特效显示的代码 test1.cpp

请添加图片描述
那么 gcc test1.cpp -o test1 pkg-config --cflags --libs opencv是如何获得opencv头文件、链接lib库文件的路径的?
答案是–cflags用来指定程序在编译时所需要头文件所在的目录;–libs是指定程序在链接时所需要的动态链接库的目录
执行文件
请添加图片描述

二、使用opencv库编写打开摄像头压缩视频的程序

创建一个 test3.cpp 文件。
请添加图片描述
编译 test3.cpp 文件,输出结果
请添加图片描述

三、使用opencv对视频的操作

如果要求打开你硬盘上一个视频文件来播放,请问示例代码1第7行代码如何修改?
只需要把capture() 中的0换成视频文件的地址
我的上一个视频文件名为:SCP.mp4
请添加图片描述
在示例代码1第9行的while循环中,Mat是一个什么数据结构? 为什么一定要加一句waitKey延时代码,删除它行不行?

Mat是一个类。由两部分数据组成:矩阵头(包括矩阵尺寸、存储方法、存储地址等信息)和一个指向所有像素值的矩阵(根据所选存储方法不同,矩阵可以是不同的维数)的指针。waitKey()–这个函数是在一个给定的时间内(单位ms)等待用户按键触发;如果用户没有按下 键,则接续等待(循环),不能删除,因为一般在imshow()后要使用waitKey(),给图像绘制留下时间,不然窗口会出现无响应情况,并且图像无法显示出来。

示例代码1代码会在while循环中一直运行,你如果试图用鼠标关闭图像显示窗口,会发现始终关不掉。需要用键盘Ctrl+C 强制中断程序,非常不友好。如何改进?

在while循环里,增加一个对waitkey这个延时函数的if语句,让它可以在我们按Esc(ASCII码为27)后break就可以了。
修改如下
之前:
请添加图片描述
修改后:
请添加图片描述


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值