利用opencv库录制九宫格视频(C++实现)

在项目开始之前,我的环境已配置完成,具体环境如何配置可参考网络教程。下面我们开始项目的实现

库的导入

#include<iostream>
#include<opencv2/opencv.hpp>
#include<string.h>
using namespace std;
using namespace cv;

这就不多说了

开启摄像头

 Mat frame;Mat newframe;string outputVideoPath = "F:\\C++language\\robocon.avi";VideoCapture capture(0);int frame_width = capture.get(CAP_PROP_FRAME_WIDTH);int frame_height = capture.get(CAP_PROP_FRAME_HEIGHT);VideoWriter writer;

开始摄像头,并获取摄像头的像素高度与宽度

定义所需变量

 int num = 3;//原图片长宽皆被划分为三份,共划分成九份int stepwidth;//划分后单个图片的宽度int stepheight;//划分后的那个图片的高度int space = 5;//九宫格中每张图片的间隔

捕获图片并生成视频

 capture >> frame;stepwidth = frame.cols / num;stepheight = frame.rows / num;resize(frame, frame, Size(stepwidth * num, stepheight * num), 1, 1, INTER_LINEAR);newframe = Mat(Size(frame.cols + (num - 1) * space, frame.rows + (num - 1) * space), CV_8UC3, Scalar(255, 255, 255));//新画布的生成writer.open(outputVideoPath, cv::VideoWriter::fourcc('M', 'J', 'P', 'G'), 10, Size(frame.cols + (num - 1) * space, frame.rows + (num - 1) * space));if (!capture.isOpened()){cout << "The camera cannot be opened" << endl;}if (!writer.isOpened()){cout << "The video cannot be saved" << endl;}

根据九宫格各张图片以及间隔的大小生成新的画布,用于存放新的九宫格图片

实现图片的抓取、转换与保存

int count = 1;while (count <= 60){capture >> frame;stepwidth = frame.cols / num;stepheight = frame.rows / num;resize(frame, frame, Size(stepwidth * num, stepheight * num), 1, 1, INTER_LINEAR);Mat newframe = Mat(Size(frame.cols + (num - 1) * space, frame.rows + (num - 1) * space), CV_8UC3, Scalar(255, 255, 255));int i = 0;int j = 0;for (i = 0; i < num; i++){for (j=0; j < num; j++){int x = stepwidth * j;int y = stepheight * i;frame(Rect(x, y, stepwidth, stepheight)).copyTo(newframe(Rect(x + space * j, y + space * i, stepwidth, stepheight)));}}    imshow("output", newframe);waitKey(100);writer << newframe;count += 1;}
}

视频以10帧的形式呈现,共60帧图片。

利用opencv库录制九宫格视频(C++实现)相关推荐

  1. 利用OpenCV读取和写入视频

    简 介: 本文介绍了如何对三种不同的视频源(视频文件, 序列图片以及网络摄像头)来进行读取显示视频,使用视频捕获对象. 也给出了如何通过视频捕获对象获取视频流的重要元数据. 介绍了使用视频写入对象把视 ...

  2. 利用Office PPT录制演示视频

    最近导师的一门课要开始上网课了,作为助教被要求做一个小说明文档来介绍如何用Mircrosoft PowerPoint来录制演示视频,于是顺便发到知乎上来,也当是第一次在知乎写文章了.(用markdow ...

  3. python opencv 录制视频_Python利用opencv实现录制视频

    import cv2 import threading    #python 多线程操作库 class RecordingThread(threading.Thread): def __init__( ...

  4. Python 图像处理篇-利用opencv库展示本地图片实例演示

    python 常用的图像处理技术有两种方法,一种是 opencv,另一种是 pytesseract. opencv 进行图像处理的话,我们需要安装 opencv-python 和 numpy 这两个库 ...

  5. 利用opencv库识别身份证图片

    一.前言 本文主要实现了对身份证图片上身份证号码的自动识别,在Qt平台上使用opencv进行图像处理,并绘制简单的用户界面,设计了一个基于Qt和opencv的身份证号码识别系统. 二.用户界面 用户界 ...

  6. opencv播放录制的视频,速度特别快

    Opencv是一帧一帧读取,bai处du理完一帧就处理下一zhi帧,中间是没有时间间隔dao的.首先要 cvGetCaptureProperty(capture, CV_CAP_PROP_FPS ); ...

  7. Python 图像处理篇-利用opencv库和numpy库读取包含中文路径下的本地图片实例演示

    很简单,只要用 numpy 把图片解码一下就好了. import cv2 import numpy as np# img = cv2.imread("小爱.jpg") # 直接读取 ...

  8. 利用FFmpeg玩转Android视频录制与压缩(二)

    请尊重原创,转载请注明出处:http://blog.csdn.net/mabeijianxi/article/details/72983362 预热 时光荏苒,光阴如梭,离上一次吹牛逼已经过去了两三个 ...

  9. 利用FFmpeg玩转Android视频录制与压缩

    本文为剑西独家授权发布,剑西也是做Android多媒体开发,算是同道中人,不过他主要集中在视频压缩,利用FFmpeg,能做很多事,但是做到效果好,却不多.今天看下他的分享,剑西的blog是:http: ...

最新文章

  1. 弹出窗口以及关闭窗口
  2. AS3中的序列化与反序列化
  3. 【学习笔记】23、读写文件(I/O操作)— 写文件
  4. 没有双11的美团,被饿了么突袭“下沉粮仓”
  5. 关于JavaScript的变量和函数提升
  6. 大象起舞——微软研发如何保持创新力和敏捷性
  7. WebGL之物体选择
  8. 图像风格迁移cvpr2020_CVPR 2020 | 浙大李俊成:用无监督强化学习方法来获得迁移能力...
  9. UI 07 _ 导航视图控制器 与 属性传值
  10. 学习 Python,这 22 个包怎能不掌握?
  11. python安装whl_1 Matplotlib在win10下安装
  12. Seaborn学习笔记4
  13. Atitit.执行cmd 命令行 php
  14. 射频微波芯片设计1:岗位以及开发工具详解
  15. 微信APP支付的sgin拼接
  16. 电线电缆的基本测试方法
  17. wps 组合图(柱状图 + 折线图)不同数据类型(比如数量、百分比)
  18. 七个基本量纲_国际单位制中七个基本物理量
  19. vs code php终端输出中文乱码及环境配置解决办法
  20. PyQt之QSS美化

热门文章

  1. 英语计算机手抄报图片大全,初一上册英语手抄报图片大全
  2. 打卡智能中国(一):看守隧道的老人
  3. Excel常用技巧--工作中最常用的30个Excel函数公式
  4. 散布矩阵(Scatter Matrix)
  5. 三国志战略版:王师秉节,新“货币”【威名】分析
  6. JavaSE复习总结
  7. 哪些场景需要使用消息队列
  8. oracle 行转列 拼接,oracle 行转列 拼接
  9. Linux命令之lsblk命令
  10. CAAC、FAA和ICAO的适航法规文件体系