##名称:利用videowriter实现多张连续图片合成avi视频
##平台:QT5.7.1+OpenCV3.2.0
##日期:2017年12月10日 /**************新建QT控制台程序**************/
#include <QCoreApplication>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <iostream>
using namespace std;
using namespace cv; int main()
{
Mat image;
char filename[]; //定义数组,其中数组大小大于等于图片的个数
int isColor = ; //如果为0 ,可输出灰度图像
int fps = ; //设置输出视频的帧率
//int frameWidth = image.cols; //单帧图片的宽
//int frameHeight = image.rows; //单帧图片的高 VideoWriter writer("/home/ttwang/images/video_out.avi", VideoWriter::fourcc('M', 'J', 'P', 'G'), fps,
Size(, ),isColor); for(unsigned int i=;i<;i++)
{
sprintf(filename,"/home/ttwang/images/image%d.jpg",i);//第二个参数是指定图片路径和图片名的一般式(image%d)
image=imread(filename);//导入图片
if (image.empty())
{
break;
}
waitKey();
//cout << image.channels() << endl; //为了解决问题而打印查看图片的通道
//cout << image.size() << endl; //为了解决问题而打印图片的尺寸
writer.write(image); //
}
}
错误调试分析:

#起初定义单帧图片尺寸时,读取原图的行和列,如下定义时:
int frameWidth = image.cols; //单帧图片的宽
int frameHeight = image.rows; //单帧图片的高 #VideoWriter的参数Size()如是这样读:
Size(frameWidth,frameHeight) #出现如下错误:
OpenCV Error: Assertion failed (img.cols == width && img.rows == height && channels == ) in write,
file /home/ttwang/opencv-3.2./modules/videoio/src/cap_mjpeg_encoder.cpp, line 调试语句:
#.打印图片的通道数看是否为3
cout << image.channels() << endl;
打印输出:
说明没有错误
#.可能是单帧尺寸不对,
cout << image.size() << endl;
打印输出:640X360
为此将Size()的参数改为 Size(,) 编译通过
对于为什么我那样定义是错的,始终没有搞明白,希望有人解答

opencv3.2.0实现连续图片合成avi视频的更多相关文章

  1. Matlab从一系列图片导出AVI视频,导出GIF动图

    平台:Win7,Matlab 2014a 从一系列图片导出AVI视频的M代码如下: clear all; % 清除变量 % 官方示例,命令窗口输入“doc VideoWriter” writerObj ...

  2. Android 图片合成:添加蒙板效果 不规则相框 透明度渐变效果的实现

    Android 图片合成:添加蒙板效果 不规则相框 透明度渐变效果的实现 暂时还未有时间开发这效果,所以先贴出来. 先贴一张效果图,这是一张手机截屏: 左上方的风景图:背景图片 右上方的人物图:前景图 ...

  3. 我的复杂的OpenCV编译之路(OpenCV3.1.0 + VS2010 + Win7)

    教程:www.cnblogs.com/jliangqiu2016/p/5597501.html 这里主要记载我编译遇到的错误及解决方法. OpenCV3.1软件下载:https://sourcefor ...

  4. OpenCV学习笔记(一)——OpenCV3.1.0+VS2015开发环境配置

    摘要: 由于最近AR(增强现实)这个概念非常火爆,各种基于AR的应用及游戏逐渐面向大众,而在AR中最重要的两个技术就是跟踪识别和增强渲染,其中跟踪识别是通过OpenCV这个开源的计算机视觉库来实现的, ...

  5. 学习 opencv---(1) opencv3.1.0 组件结构浅析

    本系列是根据 浅墨大神 的opencv系列而写的,,应该大部分内容会一样..如有侵权还请告知........... 开发环境:win7 + VS2013 + opencv3.1.0 至于OpenCV组 ...

  6. C# 图片的裁剪,两个图片合成一个图片

    图片的裁剪,两个图片合成一个图片(这是从网上摘的) /// <summary>         /// 图片裁剪,生成新图,保存在同一目录下,名字加_new,格式1.png  新图1_ne ...

  7. android 文字图片合成

    引用:http://blog.csdn.net/cq361106306/article/details/8142526 两种方法: 1.直接在图片上写文字 String str = "PIC ...

  8. win10下vs2015配置Opencv3.1.0过程详解

    下载安装Opencv3.1.0 下载Opencv3.1.0,进入官网,点击opencv for windows即可下载.  点击运行下载好的文件.实际上,opencv的安装程序就是解压缩文件,个人因为 ...

  9. php 图片添加文字水印 以及 图片合成(微信快码传播)

    1.图片添加文字水印: $bigImgPath = 'backgroud.png'; $img = imagecreatefromstring(file_get_contents($bigImgPat ...

随机推荐

  1. 为autoLayout 增加标识符,方便调试

     如上图,是一个十分简单的布局. root view 上加了一个 button 和一个 webview. 不加标识符的样子 视图层级中没有标识  只有 UIView.WKWebView 之类,如果 ...

  2. centos7无法上网问题

    在虚拟机VM中安装了centos7,无法上网,在同一个虚拟机里,也安装了Ubuntu是可以上网的,不知道咋回事,所以上网查了资料博客,现总结如下. 一.首先打开虚拟的设置,可以看到虚拟机网络的设置默认 ...

  3. windows7下部署tomcat

    需要准备的软件: 1.JDK 安装程序 2.Tomcat 安装程序 JDK安装步骤: 安装方式:使用安装程序进行安装.使用JDK文件夹,免安装,以下步骤使用的是文件夹免安装,只需配置环境变量 配置环境 ...

  4. POJ 1160

    #include <iostream> #define MAXN 305 #define inf 123456789 using namespace std; int _m[MAXN][M ...

  5. java基本语法二

    1 运算符 1.1 运算符的概念 运算符是一种特殊的符号,用以表示数据的运算.赋值和比较等. 在java语言中,运算符有如下的分类: ①算术运算符. ②赋值运算符. ③比较运算符(关系运算符). ④逻 ...

  6. 手淘适配-flexible

    目标 拿一个双11的Mobile页面来做案例,比如你实现一个类似下图的一个H5页面: 目标很清晰,就是做一个这样的H5页面. 痛点 虽然H5的页面与PC的Web页面相比简单了不少,但让我们头痛的事情是 ...

  7. 【Java并发编程】:并发新特性—Executor框架与线程池

    Executor框架简介 在Java5之后,并发编程引入了一堆新的启动.调度和管理线程的API.Executor框架便是Java 5中引入的,其内部使用了线程池机制,它在java.util.cocur ...

  8. OkHttp3实现Cookies管理及持久化

    转发自:http://www.codeceo.com/article/okhttp3-cookies-manage.html OKHttp3正式版刚发布了没几天,正好重构之前的代码,于是第一时间入坑了 ...

  9. Android 开发工具类 14_ JsonTools

    天气 JSON 数据解析 package com.example.weather_json.tools; import java.util.ArrayList; import java.util.Li ...

  10. sql server数据行号

    select ROW_NUMBER() over(order by createTime desc) as RowNum,NoticeContent,CreateTime from PTS_Notic ...