Mat实现将两列视频帧文件显示在同一个视频中
注释是之前使用IplImage指针实现的,但是由于运行了几次后出现了内存访问冲突的问题,所以就改用了Mat类,感兴趣的可以试着用IplImage实现下,两种版本都是可以运行的。

//将两个视频并列在一个视频中播放
#include <opencv2\opencv.hpp>
#include <opencv2\core\core.hpp>
#include <opencv2\highgui\highgui.hpp>
using namespace std;
using namespace cv;int main()
{Mat depth = imread("F:/3DImageProcess/MSProjection/MSProjection/MSProjection/results/cam7/warp-depth-f000.png");Mat image = imread("F:/3DImageProcess/MSProjection/MSProjection/MSProjection/results/cam7/warp-img-f000.png");int liv_width = depth.cols + image.cols;int liv_height = image.rows;int liv_nChannels = image.channels();VideoWriter videoWriter("F:/3DImageProcess/MSProjection/MSProjection/MSProjection/results/cam7/warp-result.avi",CV_FOURCC('M','J','P','G'),20,Size(liv_width,liv_height));//IplImage *lpv_firstFrame1 = cvLoadImage("F:/3DImageProcess/MSProjection/MSProjection/MSProjection/results/cam7/final-depth-f000.png");//IplImage *lpv_firstFrame2 = cvLoadImage("F:/3DImageProcess/MSProjection/MSProjection/MSProjection/results/cam7/final-img-f000.png");//int liv_width = lpv_firstFrame1->width+lpv_firstFrame2->width;//int liv_height = lpv_firstFrame2->height;//int liv_nChannels = lpv_firstFrame2->nChannels;// 初始化CvVideoWriter//CvVideoWriter* videoWriter = cvCreateVideoWriter("final-result.avi",CV_FOURCC('X', 'V', 'I', 'D'),    20, cvSize(liv_width, liv_height),1);/*IplImage *lpv_imageFrame1;IplImage *lpv_imageFrame2;*//*Mat image1;Mat image2;*///用于表示处于视频的多少帧int i = 0;  char imageDir1[256], imageDir2[256];    //略大于读入文件目录的总字符数,防止因为'\0'而出现栈溢出的情况/*sprintf(imageDir1, "F:/3DImageProcess/MSProjection/MSProjection/MSProjection/results/cam7/final-depth-f%03d.png", i);sprintf(imageDir2, "F:/3DImageProcess/MSProjection/MSProjection/MSProjection/results/cam7/final-image-f%03d.png", i);*//*image1 = imread(imageDir1);image2 = imread(imageDir2);*///while ((lpv_imageFrame1 = cvLoadImage(imageDir1))&&(lpv_imageFrame2=cvLoadImage(imageDir2)))//while (image1.empty()&&image2.empty())while (!(depth.empty() && image.empty())){Rect rectd = Rect(0, 0, depth.cols, depth.rows);Rect recti = Rect(depth.cols, 0, image.cols, image.rows);Mat dstImage;dstImage.create(Size(liv_width,liv_height),image.type());/*image1.copyTo(Mat(dstImage, rectd));image2.copyTo(Mat(dstImage, recti));*/depth.copyTo(Mat(dstImage, rectd));image.copyTo(Mat(dstImage, recti));videoWriter << dstImage;i++;sprintf(imageDir1, "F:/3DImageProcess/MSProjection/MSProjection/MSProjection/results/cam7/warp-depth-f%03d.png", i);sprintf(imageDir2, "F:/3DImageProcess/MSProjection/MSProjection/MSProjection/results/cam7/warp-img-f%03d.png", i);depth = imread(imageDir1);image = imread(imageDir2);//两个ROI区域/*CvRect rect1 = cvRect(0, 0, lpv_imageFrame1->width, lpv_imageFrame1->height);CvRect rect2 = cvRect(lpv_imageFrame1->width, 0, lpv_imageFrame2->width, lpv_imageFrame2->height);*///img1 img2 原图  dst1、dst2放缩后的图  dst_big 大图 *dst1, *dst2, //IplImage  *dst_big = cvCreateImage(cvSize(lpv_imageFrame1->width + lpv_imageFrame2->width, lpv_imageFrame2->height), lpv_imageFrame2->depth, 3);设置ROI//cvSetImageROI(dst_big, rect1);//cvCopy(lpv_imageFrame1, dst_big);//cvSetImageROI(dst_big, rect2);//cvCopy(lpv_imageFrame2, dst_big);//cvWriteFrame(videoWriter, dst_big);//为什么没法即时显示图像?/*IplImage  *dt = cvCreateImage(cvSize(1000, 375), lpv_imageFrame2->depth, 3);cvResize(dst_big, dt);cvShowImage("imageFrame", dt);*/释放ROI//cvResetImageROI(dst_big);//释放图像空间            //cvReleaseImage(&dst_big);cvReleaseImage(&dt);}必须释放,否则会出现写好的视频丢失总帧数、不能快进的问题//cvReleaseVideoWriter(&videoWriter);   //   //释放图像空间//cvReleaseImage(&lpv_firstFrame1);//cvReleaseImage(&lpv_firstFrame2);//cvReleaseImage(&lpv_imageFrame1);//cvReleaseImage(&lpv_imageFrame1);return 0;
}

最终的效果图如下:

opencv实现两个视频拼接显示相关推荐

  1. 两段视频如何无缝拼接?如何将两个视频拼接在一起

    两段视频如何无缝拼接?越来越多的人开始习惯于拍摄视频发布在各种平台上.有些人还喜欢拍摄vlog记录自己的生活,拍摄之后整理时,需要将它们合并在一起,如何将两个视频拼接在一起? 软件一:FFmpeg J ...

  2. Video Input with OpenCV and similarity measurement(使用opencv测量两个视频的相似度)

    Video Input with OpenCV and similarity measurement(使用opencv测量两个视频的相似度) 参考示例程序及视频文件下载: 一.先决条件 1.两种检查相 ...

  3. 如何把两个视频拼接在一起?这些工具太棒了!

    如何把两个视频拼接在一起?对于自媒体行业的人来讲,平时在进行短视频的剪辑时,总会需要合并多个视频,之后再剪辑处理.不过对于大部分没有从事自媒体行业的人来讲,可能对合并视频并不了解.下面我就来给大家分享 ...

  4. php中的如何将拼接到一起,如何将两个视频拼接在一起?视频拼接方法

    专注实拍 监控 风景 各类视频 申请入群加微信: neimu500 因为专注 所以专业! 我们只发优质实拍视频,群管理专业.规范,确保群的视频质量以及秩序!无水印可下载可分享. 网上很多网红都通过视频 ...

  5. jetson nano 在opencv拉流的视频上显示中文汉字(含c++完整源码)

    目录 问题 解决方案 步骤一:生成中文图片 步骤二:中文图片蒙皮到视频帧,形成中文显示效果 问题 在jetson nano这样的嵌入式设备上,用opencv拉流,并在实时视频上面,显示汉字. 关于使用 ...

  6. python opencv如何读取本地视频并显示 cv2.VideoCapture()

    import cv2cap = cv2.VideoCapture('Video_2020-01-06_101858.wmv')while cap.isOpened():ret, frame = cap ...

  7. 两个视频左右拼接成一个视频,且两个视频音频都保留

    目录 背景 技术 思路 过程 1.提取图片帧(opencv) 2.合成新图组(opencv) 3.压缩新图组变成新视频(opencv) 4.提取音频.合并音频(ffmpeg) 5.将新音频压缩至新视频 ...

  8. OpenCV进行视频拼接

    最近实验室需要做个Demo,要把两个视频拼到一个窗口里面进行播放.于是写了个使用ROI来实现两个视频拼接到一起的代码,但是该代码的前提是两个视频的帧数.宽高都一样. #include "st ...

  9. IOS视频编辑,视频裁剪,视频拼接,音频处理,视频处理

    前言 用代码在简单视频编辑中,主要就是加美颜.水印(贴图).视频截取.视频拼接.音视频的处理,在美颜中,使用GPUImage即可实现多种滤镜.磨皮美颜的功能,并且可以脸部识别实时美颜等功能,这个有很多 ...

最新文章

  1. 我也来晒Flex编写的工作流编辑器
  2. 浅谈公司形象网站的设计流程
  3. [概统]本科二年级 概率论与数理统计 第二讲 几何概型
  4. Mysql中的递归层次查询(父子查询)
  5. ANSYS——固定斜度的变截面变截面的定义、自由耦合和变截面的定义
  6. 图解算法之排序算法(3)——插入排序
  7. NonComVisibleBaseClass Exception
  8. 【分类汇总】110 天以来的题解分类汇总
  9. 漫画:Dijkstra 算法的优化
  10. excel服务器bom修改,勤哲Excel服务器物料清单BOM表的实现方法
  11. ENVI大气校正后遥感图像颜色变了及编辑头文件
  12. Mysql 窗口函数
  13. Redis 使用 scan 命令代替 keys
  14. 工业机器人组成结构【拆卸 / 组装 KUKA 工业机器人】
  15. 用Eclipse建立从Vuze/Azureus工程并编译运行的方法
  16. MongoDB 文档字段增删改
  17. 递归算法——阶乘、斐波那契数列
  18. 基于无人机的移动边缘计算网络(Matlab代码实现)
  19. 【头歌】重生之我在py入门实训中(3): if条件语句
  20. 教你如何正确运营小红书账号,纯干货!

热门文章

  1. 与业务深度融合,泛微协助大型集团搭建一体化的合同管理平台
  2. oracle常用sql语句
  3. win10去除管理员账户密码后出现两个账号的解决方法
  4. 渲染用计算机功耗,用了功率计,才发现原来电脑功耗其实并不大,买大功率电源是否浪费?...
  5. 手把手带你实现JAVA自定义异常和全局异常处理
  6. 30、40多岁的人互联网创业优势何在
  7. 百度网盘在线播放倍数调整
  8. 惠头条脚本源码分享,基于autojs,自动关闭弹窗广告,播放和切换视频
  9. 解决迅雷、酷我软件安装乱码问题
  10. oracle统计大于0的的值次数,[转载]EXCEL中统计每个数据的出现次数