文章目录

  • 一、OpenCV图片特效实例(实现原图中心放大两倍)
  • 二、OpenCV视频使用实例
    • 1、虚拟机获取摄像头权限
    • 2、播放视频
    • 3、录制视频
  • Ubuntu下OpenCV初步学习至此结束!!

一、OpenCV图片特效实例(实现原图中心放大两倍)

1、准备工作:
首先创建文件存放自己的代码

而后创建一个.cpp文件编写测试代码

gedit test1.cpp

将以下代码复制到test1.cpp中:

#include <iostream>
#include <math.h>
#include <opencv2/opencv.hpp>
#include<opencv2/highgui.hpp>
#include <opencv2/highgui/highgui_c.h>using namespace cv;
using namespace std;int main() {// 载入原图Mat srcImage = imread("./Lucy.jpg");Mat dstImage1,dstImage2;        // 临时变量和目标图的定义Rect m_select;// 显示原图imshow("【原始图】", srcImage);//进行尺寸调整操作resize(srcImage, dstImage1, Size(srcImage.cols * 2, srcImage.rows * 2), (0, 0),(0, 0), 1);m_select = Rect(200,200,300,400);dstImage2 = dstImage1(m_select);imshow("【原图中心放大】", dstImage2);waitKey(0);return 0;
}

2、编译
执行以下命令进行编译:

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


在同目录下保存一张图片命名为:Lucy.jpg

运行test1

./tset1

效果如下:

3、make+makefile方式编译(记得先删除可运行的test1)
首先输入以下命令

cat makefile

然后输入以下代码:

.PHONY: clean
g=g++
t1=test1.cpp
t2=test1.out
lib=$(shell pkg-config opencv --cflags --libs opencv4)
$(t2):$(t1)$(g) $(t1) $(lib) -o $@ clean:rm -f $(t2)

二、OpenCV视频使用实例

1、虚拟机获取摄像头权限

首先打开cmd(Win+R)输入services.msc
找到如下项目并确定处于启动状态

然后点击VM虚拟机选择设置一栏


选择“USB控制器”,将“USB兼容性”设置为“USB3.0或以上”并点击确定


再次点击“虚拟机”,选择“可移动设备”,然后选择“Chicony Integrated Camera(不同设备名称可能不同,选择XXX Camera即可)”,最后点击连接。

点击确定

此时观察到虚拟机右下角摄像头标志有个绿点即证明连接成功。(同一个设备一次只能同时连接到主机或虚拟机,此时摄像头已与主机断开)

2、播放视频

创建一个test2.cpp文件,输入以下代码:

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

代码讲解:

  • 如果语句:VideoCapture capture(0),后面的参数设置为 0,则从摄像头读取视频并循环显示每一帧;如果设置为一个视频的文件名,比如:man.mp4 ,则会将视频读取并循环显示每一帧。
  • while 循环体中的 Mat 数据结构其实是一个点阵,对应图像上的每一个点,点的集合形成了一帧图像,有关 Mat 详解请看:OpenCV中Mat数据结构
  • 语句:waitKey(30) ,中的参数单位是 ms 毫秒,也就是每一帧间隔 30 ms,该语句时不能删除的,否则会执行错误,无法播放视频或录制视频。

编译

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

运行

./test2

效果如下:

3、录制视频

gedit test3.cpp

复制以下代码:

/*********************************************************************
打开电脑摄像头,空格控制视频录制,ESC退出并保存视频RecordVideo.avi
*********************************************************************/
#include<iostream>
#include <opencv2/opencv.hpp>
#include<opencv2/core/core.hpp>
#include<opencv2/highgui/highgui.hpp>
using namespace cv;
using namespace std;int main()
{//打开电脑摄像头VideoCapture cap(0);if (!cap.isOpened()){cout << "error" << endl;waitKey(0);return 0;}//获得cap的分辨率int w = static_cast<int>(cap.get(cv::CAP_PROP_FRAME_WIDTH));int h = static_cast<int>(cap.get(cv::CAP_PROP_FRAME_HEIGHT));Size videoSize(w, h);VideoWriter writer("RecordVideo.avi", cv::VideoWriter::fourcc('M', 'J', 'P', 'G'), 25, videoSize);Mat frame;int key;//记录键盘按键char startOrStop = 1;//0  开始录制视频; 1 结束录制视频char flag = 0;//正在录制标志 0-不在录制; 1-正在录制while (1){cap >> frame;key = waitKey(100);if (key == 32)//按下空格开始录制、暂停录制   可以来回切换{startOrStop = 1 - startOrStop;if (startOrStop == 0){flag = 1;}}if (key == 27)//按下ESC退出整个程序,保存视频文件到磁盘{break;}if (startOrStop == 0 && flag==1){writer << frame;cout << "recording" << endl;}else if (startOrStop == 1){flag = 0;cout << "end recording" << endl;}imshow("picture", frame);}cap.release();writer.release();destroyAllWindows();return 0;
}

编译:

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

运行:

./test3

效果如下:

ESC停止录制并保存(可以看到在目录下生成了一个.avi文件)

Ubuntu下OpenCV初步学习至此结束!!

Ubuntu系统下OpenCV使用实例(虚拟机获取摄像头权限)相关推荐

  1. 嵌入式02.4:Ubuntu系统下openCV的简易操作

    概述:完成opencv的安装及安装过程中出现的问题,根据提供的代码用opencv进行图片处理及视频的播放. 目录 一.opencv的安装 二.编写一个打开图片进行特效显示的代码 test1.cpp 1 ...

  2. X86 平台Ubuntu系统下模拟ARM64架构虚拟机的方法

    下载qemu源码,编译出qemu-system-aarch64交叉编译程序 下载linux5.9.2内核,编译为zImage,亦可用其他内核 下载busybox,并将编译结果打包到zImage, 以r ...

  3. Ubuntu系统下基于Opencv完成图像编程

    文章目录 一.OpenCV简介 二.安装OpenCV 2.1 安装包下载 2.2 使用cmake安装 2.3 配置环境 三.使用实例 3.1 图片运用 3.2 视频运用 四.总结 五.参考文献 一.O ...

  4. Ubuntu系统下安装opencv3.x并打开图片和视频文件以及打开摄像头录制视频

    目录 一.安装opencv 1.前置安装条件 2.安装环境 3.下载opencv3.4.11 4.解压安装包 5.开始安装 6.检查是否安装成功 二.显示图片和播放视频 1.显示图片 2.播放视频 三 ...

  5. Ubuntu系统下查看摄像头参数并基于OpenCV调用

    目录 1. 安装v4l-utils 2. 查找连接的摄像头列表 3. 查看各相机支持的分辨率.帧率.像素格式等参数 4. 注意事项 5. OpenCV(C++)调用摄像头代码 本博文描述了在Ubunt ...

  6. 【嵌入式】在Ubuntu系统下通过OpenCV实现点阵汉字的字模读取与显示

    介绍汉字点阵的原理,理解汉字的机内码.区位码编码规则和字形数据存储格式,通过OpenCV在Ubuntu系统下显示点阵汉字 一.汉字点阵原理 1.汉字点阵原理 1.点阵 2.汉字编码 3.点阵字库存储 ...

  7. 基于虚拟机Ubuntu系统下C语言简单编写程序

    目录描述 前言 一.修改系统参数 1.查看Ubuntu版本 2.原文件备份 3.下载清华源 二.编写"hello world"C语言程序 1.安装vim 2.建立hello.c 3 ...

  8. ④ESP8266 开发学习笔记_By_GYC 【Ubuntu系统下ESP8266 开发环境搭建】

    目录 ④ESP8266 开发学习笔记_By_GYC [Ubuntu系统下ESP8266 开发环境搭建] 一.安装前准备 1.乐鑫官方的ESP-IDF 编程指南 2.ESP-IDF风格的ESP8266 ...

  9. Ubuntu系统下U盘设备的读取

    在前几天刚 接触到Ubuntu系统,关于U盘的读取存在有以下问题: 1,Ubuntu查询不到U盘设备 解决方案:本人使用的Ubuntu版本为如下图所示,虚拟机版本VMware12 首先注意的是,对于笔 ...

最新文章

  1. 5、Java并发性和多线程-相同线程
  2. onlyoffice 20并发限制处理
  3. 【Java】Optional容器
  4. 在linux中,强行中断程序 kill命令
  5. Halcon 找圆测量工具
  6. HTML5客户端数据存储机制Web Storage和Web SQL Database
  7. 李宏毅机器学习——课后作业1
  8. Unity3D面试总结
  9. MGS摄像头:USF56S335_3238_V2 IMX335 5MP UVC应用手册
  10. 中国20强游戏公司2022上半年年报分析:复合因素下业绩增长承压,海外新兴市场蕴含增长新趋势
  11. 计算机博士、加班到凌晨也要化妆、段子手……IT 女神驾到!
  12. 计算机打印后台处理程序在哪里,Win7系统连接打印机出现本地打印后台处理程序服务没有运行怎么办...
  13. 直播系统源码搭建、手机直播源码APP平台开发制作
  14. SVN命令使用提示版本过旧的问题E155019
  15. 新的一年,如何打开超级APP发展格局
  16. 前端Html的全新认识
  17. sudo:无法解析主机 解决方案
  18. 2022年跨境电商卖家必知的黑色星期五营销策略
  19. 使用开源软件Inno Setup制作软件安装包
  20. HTML字体可以设百分比嘛,使用百分比字体大小?

热门文章

  1. tensorflow自定义op:梯度
  2. 计算机绘图 CAXA电子图板2009,CAXA电子图板
  3. python-scrapy-MongoDB 爬取链家二手房
  4. 最优传输论文(十二):Extracting Relationships by Multi-Domain Matching论文原理
  5. 对抗打码平台的验证码思路
  6. hackthebox-Toxic writeup
  7. python基础绘图,教你玩转图表制作
  8. SQL中DATEADD用法
  9. 随机森林计算特征重要性_随机森林中计算特征重要性的3种方法
  10. 盘点一下CodePen上那些优秀的前端作品(01)