利用opencv库录制九宫格视频(C++实现)
利用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++实现)相关推荐
- 利用OpenCV读取和写入视频
简 介: 本文介绍了如何对三种不同的视频源(视频文件, 序列图片以及网络摄像头)来进行读取显示视频,使用视频捕获对象. 也给出了如何通过视频捕获对象获取视频流的重要元数据. 介绍了使用视频写入对象把视 ...
- 利用Office PPT录制演示视频
最近导师的一门课要开始上网课了,作为助教被要求做一个小说明文档来介绍如何用Mircrosoft PowerPoint来录制演示视频,于是顺便发到知乎上来,也当是第一次在知乎写文章了.(用markdow ...
- python opencv 录制视频_Python利用opencv实现录制视频
import cv2 import threading #python 多线程操作库 class RecordingThread(threading.Thread): def __init__( ...
- Python 图像处理篇-利用opencv库展示本地图片实例演示
python 常用的图像处理技术有两种方法,一种是 opencv,另一种是 pytesseract. opencv 进行图像处理的话,我们需要安装 opencv-python 和 numpy 这两个库 ...
- 利用opencv库识别身份证图片
一.前言 本文主要实现了对身份证图片上身份证号码的自动识别,在Qt平台上使用opencv进行图像处理,并绘制简单的用户界面,设计了一个基于Qt和opencv的身份证号码识别系统. 二.用户界面 用户界 ...
- opencv播放录制的视频,速度特别快
Opencv是一帧一帧读取,bai处du理完一帧就处理下一zhi帧,中间是没有时间间隔dao的.首先要 cvGetCaptureProperty(capture, CV_CAP_PROP_FPS ); ...
- Python 图像处理篇-利用opencv库和numpy库读取包含中文路径下的本地图片实例演示
很简单,只要用 numpy 把图片解码一下就好了. import cv2 import numpy as np# img = cv2.imread("小爱.jpg") # 直接读取 ...
- 利用FFmpeg玩转Android视频录制与压缩(二)
请尊重原创,转载请注明出处:http://blog.csdn.net/mabeijianxi/article/details/72983362 预热 时光荏苒,光阴如梭,离上一次吹牛逼已经过去了两三个 ...
- 利用FFmpeg玩转Android视频录制与压缩
本文为剑西独家授权发布,剑西也是做Android多媒体开发,算是同道中人,不过他主要集中在视频压缩,利用FFmpeg,能做很多事,但是做到效果好,却不多.今天看下他的分享,剑西的blog是:http: ...
最新文章
- 弹出窗口以及关闭窗口
- AS3中的序列化与反序列化
- 【学习笔记】23、读写文件(I/O操作)— 写文件
- 没有双11的美团,被饿了么突袭“下沉粮仓”
- 关于JavaScript的变量和函数提升
- 大象起舞——微软研发如何保持创新力和敏捷性
- WebGL之物体选择
- 图像风格迁移cvpr2020_CVPR 2020 | 浙大李俊成:用无监督强化学习方法来获得迁移能力...
- UI 07 _ 导航视图控制器 与 属性传值
- 学习 Python,这 22 个包怎能不掌握?
- python安装whl_1 Matplotlib在win10下安装
- Seaborn学习笔记4
- Atitit.执行cmd 命令行 php
- 射频微波芯片设计1:岗位以及开发工具详解
- 微信APP支付的sgin拼接
- 电线电缆的基本测试方法
- wps 组合图(柱状图 + 折线图)不同数据类型(比如数量、百分比)
- 七个基本量纲_国际单位制中七个基本物理量
- vs code php终端输出中文乱码及环境配置解决办法
- PyQt之QSS美化