OpenCV将4个视频文件并列合成为1个,在窗口的4个区域播放

Qt+opencv多摄像头视频显示 上个文章就说了,我正在实现一个智能监控系统。 由此实现了Qt的FTP文件传输:http://blog.csdn.net/u013812682/article/details/52199502。 还有Qt的tcp视频传输:http://blog.csdn.net/u013812682/article/details/52185540。 在此我将实现基于Qt和opencv的基于多摄像头的视频显示。 阅读详情

《OpenCV系列教程》
项目位置:OpenCV-Sample
代码位置:103-4VidoesArePlayedSideBySideAsOneVideo.py

代码功能是将4个独立的视频文件并列合并成了一个视频文件,并在屏幕的4个区域进行播放。同理可以将更多文件合并成为一个文件。

和成效果如下:
在这里插入图片描述
代码如下:

import cv2
import numpy as np

videoLeftUp = cv2.VideoCapture('./res/2_003_013.mp4')
videoLeftDown = cv2.VideoCapture('./res/2_003_014.mp4')
videoRightUp = cv2.VideoCapture('./res/2_003_015.mp4')
videoRightDown = cv2.VideoCapture('./res/2_003_016.mp4')

fps = videoLeftUp.get(cv2.CAP_PROP_FPS)

width = (int(videoLeftUp.get(cv2.CAP_PROP_FRAME_WIDTH)))
height = (int(videoLeftUp.get(cv2.CAP_PROP_FRAME_HEIGHT)))

videoWriter = cv2.VideoWriter('./out/4in1.mp4', cv2.VideoWriter_fourcc('m', 'p', '4', 'v'), fps, (width, height))

successLeftUp, frameLeftUp = videoLeftUp.read()
successLeftDown , frameLeftDown = videoLeftDown.read()
successRightUp, frameRightUp = videoRightUp.read()
successRightDown, frameRightDown = videoRightDown.read()

while successLeftUp and successLeftDown and successRightUp and successRightDown:
    frameLeftUp = cv2.resize(frameLeftUp, (int(width / 2), int(height / 2)), interpolation=cv2.INTER_CUBIC)
    frameLeftDown = cv2.resize(frameLeftDown, (int(width / 2), int(height / 2)), interpolation=cv2.INTER_CUBIC)
    frameRightUp = cv2.resize(frameRightUp, (int(width / 2), int(height / 2)), interpolation=cv2.INTER_CUBIC)
    frameRightDown = cv2.resize(frameRightDown, (int(width / 2), int(height / 2)), interpolation=cv2.INTER_CUBIC)

    frameUp = np.hstack((frameLeftUp, frameRightUp))
    frameDown = np.hstack((frameLeftDown, frameRightDown))
    frame = np.vstack((frameUp, frameDown))

    videoWriter.write(frame)
    successLeftUp, frameLeftUp = videoLeftUp.read()
    successLeftDown, frameLeftDown = videoLeftDown.read()
    successRightUp, frameRightUp = videoRightUp.read()
    successRightDown, frameRightDown = videoRightDown.read()

videoWriter.release()
videoLeftUp.release()
videoLeftDown.release()
videoRightUp.release()
videoRightDown.release()

最后合成的文件是无声的,那就给他配个声音吧。从刚才的那4个视频中随意选一个提取音频:

$ ffmpeg -i 2_003_014.mp4 -vn -y -acodec copy 3.aac

视频、音频合二为一:

 ffmpeg -i ../out/4in1.mp4  -i ./3.aac  -vcodec copy -acodec copy output.mp4

这样新生成的视频就有声音了。

通过OpenCV识别QR二维码 二维码有很多种,我们今天介绍的就是QR这种二维码,全名是 Quick Response Code,下面我们就称作QR码。 博客分为两部分,第一部分是QR码的基础知识,第二部分是通过OpenCV识别QR码 一 、QR码的基础知识 什么是QR码? QR码能保存的数据量有多少? 如何扫描QR码?让我们了解一下QR码的基础知识。了解创建、读取二维码的技术。 什么是QR码 QR码就是二维版本的条形码,从我... 阅读详情

相关推荐

安卓 图片合成视频(利用javacv)

利用javacv将指定的图片合成视频,先输入一个目录(文件夹名称),点击开始后过一段时间视频合成完毕后程序会自动退出,然后去输入的文件夹下寻找视频

opencv实现两个视频拼接显示

Mat实现两个视频拼接

probie的博客 1万+

SAPMM学习指南.pdf

SAPMM学习指南.pdfSAPMM学习指南.pdfSAPMM学习指南.pdfSAPMM学习指南.pdfSAPMM学习指南.pdfSAPMM学习指南.pdf

使用opencv进行视频切分与合并

使用opencv进行视频切分与合并 视频切分 使用opencv进行视频处理,可以用到其中的VideoCapture方法获取视频路径,通过cap.get方法获取视频帧数;cvtColor是对视频颜色空间进行转换,其支持的转换类型和转换码如下: 1、RGB和BGR(opencv默认的彩色图像的颜色空间是BGR)颜色空间的转换 cv::COLOR_BGR2RGB cv::COLOR_RGB2BGR cv::COLOR_RGBA2BGRA cv::COLOR_BGRA2RGBA 2、向RGB和BGR图像中增添alp

Lucas_Vazquez的博客 1448

MFC中利用多线程实现opencv视频窗口多画面

效果图如上所示,在vc6.0+opencv1.0环境下实现。虽然现在opencv出2.0了,但是不再支持vc6.0了,做这个例子当是跟vc6.0告个别了。呵呵 详细内容,往后会写上去的。中间遇到不少问题,都被我一一解决了。呵呵 介绍之前,我们需要澄清一些问题: 1、在控制台下能否实现多画面? 答案是肯定的,通常采用内存贴图就可以实现的。只要把要显示位置的坐标计算正确,就可以了...

weixin_30869099的博客 499

python opencv 同一窗口播放4个以及多个同帧率视频

python opencv 同一窗口播放4个以及多个同帧率视频

weixin_44003563的博客 1793

一个窗口中显示多个视频窗口

转自:http://www.opencv.org.cn/forum/viewtopic.php?f=1&t=7996&start=0在一个窗口中显示多个视频,并在每个子窗口左上角显示系统时间,函数cvShowManyImages是改写的代码: 全选 #include #include #include #include #include void cvShowManyImages(char*

紫梧桐的专栏 2188

OpenCV分割视频文件4区域,1视频变成4视频

代码位置:104-SplitTheFourAreasOfTheVideo.py 上一篇写的是《OpenCV4视频文件并列合成1个,在窗口4区域播放》这一篇是将一个拆成四个,道理很简单,就是将视频一份四份,左上、左下、右上、右下,分别编辑成视频。 代码: import cv2 import numpy as np cameraCapture = cv2.VideoCapture('./r...

kingroc的博客 4172

python 视频播放 拖动_python + opencv鼠标拖动视频区域裁剪

# -*- coding: utf-8 -*-import sysimport cv2import numpyas npimport timeimport sys## from PyQt5.QtCore import *# from PyQt5.QtGui import *# from PyQt5.QtWidgets import *current_pos= Nonetl= Nonebr= Non...

weixin_29608291的博客 478

使用opencv录制视频,播放视频文件

官方文档:https://docs.opencv.org/3.4.0/dd/d43/tutorial_py_video_display.html opencv教程:https://docs.opencv.org/3.4.0/d6/d00/tutorial_py_root.html

gs 930

OpenCV--视频文件相关操作】

注意:调用cv.imshow()显示图像时,要使用cv.waitkey()设置适当持续时间,通常设置25ms。criteria:确定窗口搜索停止的准则,主要有迭代次数达到设置的最大值,窗口中心漂移值大于某个设定的限值。3.利用cap.read()获取视频中的每一帧图像,使用out.write()将某一帧图像写入视频中。5.切割输入图像从(0,1)至(10,11)的临时图像,对比直方图,并记录到结果图像。1.从输入图像的左上角(0,0)开始,切割一块(0,0)至(10,10)的临时图像。

m0_70964767的博客 6193

opencv-显示多个窗口

cv2.namedWindow('image', cv2.WINDOW_NORMAL) cv2.imshow('image', img) cv2.namedWindow("cutout", cv2.WINDOW_NORMAL) cv2.imshow("cutout", dst) cv2.waitKey()

qq_35482604的博客 4810

在Android上使用opencv将摄像头获取并处理的图片转成视频

核心代码: //该回调函数是button的回调函数,实现的功能是点击button就缓存已保存的图片为视频 private void addCallBack() { int fps = 10; int ifourcc = VideoWriter.fourcc('M','J','P','G'); org.opencv.core.Size cvSize = new org.o...

SeventhBlue 2060

opencv视频分解和视频合成

视频分解 import cv2 cap = cv2.VideoCapture("E:/code/conputer_visual/data/1.mp4") #获取一个视频句柄 isOpened = cap.isOpened() #判断当前句柄是否可以打开 fps = cap.get(cv2.CAP_PROP_FPS) #获取帧率 width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)) #获取图像宽度 height = int(cap.get(cv2.CAP_PROP_

cyj5201314的博客 749

OpenCV——把两个视频按时间先后合成一个视频

【代码】OpenCV——把两个视频按时间先后合成一个视频

张飞飞的博客 759

学习OpenCV3.2+QT5+ffmpeg实战开发视频编辑器视频教程

OpenCV3.2+QT5+ffmpeg实战开发视频编辑器视频培训课程概况:教程中会讲解到基于opencv视频和摄像机录制、播放播放进度控制,多视频图像合并、多视频图像融合、剪切、视频亮度、对比度、尺寸(近邻插值(手动实现),双线性插值,图像金字塔)、颜色格式(灰度图,二值化(阈值)),旋转镜像,视频裁剪(ROI),视频水印(ROI+weight),导出处理后的视频(包含音频,使用ffmpeg工具对音频进行抽取、剪切和终于opencv处理的视频合并)。

Qt+Opencv 显示多通道摄像头画面,双击放大画面,再双击缩小

Qt+Opencv多线程同时显示多个USB摄像头于QLabel(如何实现请看这篇博客),双击放大当前所显示的画面区域,再双击还原缩小至初始大小。主要思想:在Widget类中通过bool eventFilter(QObject *watched, QEvent *event);函数进行事件过滤鼠标双击事件,并进行相关操作。.........

wang_chao118的博客 3250

QT线程处理视频播放(keyword:线程、QLabel、QTimer、Opencv

1 使用 QTimer 和 std::thread 在QlLabel中播放视频 1.1 以下为实验代码,若有纰漏敬请谅解! 2 前提 2.1 在QT UI 界面中建立两个 QLabel 控件。 3 工程 3.1 mainwindow.cpp #include "mainwindow.h" #include "ui_mainwindow.h" MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new U

qq_37459242的博客 4160
上一篇: 将一个视频切成多个大小相等的块
下一篇: OpenCV分割视频文件的4个区域,1个视频变成4个视频
王小鹏鹏
博客等级 码龄23年 316粉丝 162原创
评论 32
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值