OpenCV学习 —— 图片集合成视频

  这个很简单,没什么好说的。。。这里给出学习手册:

  1.官方教程:https://docs.opencv.org

  2.这个是一些video相关的API参考:https://docs.opencv.org/trunk/dd/d9e/classcv_1_1VideoWriter.html

  3.一个简单的例子实现将图片集合成视频:https://docs.opencv.org/trunk/d5/d57/videowriter_basic_8cpp-example.html#a5

  我的测试代码:

#include "opencv2/imgcodecs.hpp"
#include "opencv2/highgui.hpp"
#include "opencv2/videoio.hpp"
#include <iostream>
#define BUF_SIZE 0xffff
using namespace cv;

using std::cin;
using std::cout;
using std::endl;

int main(int argc, char*argv[])
{
   Mat src;
	int fps = 10;
	char img[BUF_SIZE] = "/home/darkchii/图片/sg0_2.png";

	src = imread(img);
	if( src.empty() ) { cout << "Error loading src" << endl; return -1; }
	VideoWriter writer("/home/darkchii/视频/sg0.avi", VideoWriter::fourcc(‘M‘, ‘J‘, ‘P‘, ‘G‘), fps,
                        src.size());
	if (!writer.isOpened()) { cout << "Error write" << endl; return -1; }
	for (int i = 2; i < 7; i++)
	{
		if (sprintf(img, "/home/darkchii/图片/sg0_%d.png", i) < 0) { cout << "Error img buf" << endl;return -1; }
	   src = imread(img);
	   if( src.empty() ) { cout << "Error loading src" << endl; return -1; }
	   // imshow("sg0", src);
	   waitKey(5);
		writer.write(src);
	}
   return 0;
}

  谈一下一些小细节,其实官方文档中有提示,注意仔细看应该没问题:

    1.注意图像尺寸,要合成的每一张图片规格必须一致。

    2.注意图像RGB值,如果是jpg/png这样的,则默认打开3个通道(RGB),imread()中有一个省缺参数isColor默认为true,如果图片是灰度图像,应将isColor设置为false。参考:https://blog.csdn.net/yang_xian521/article/details/7440190(看评论)、https://docs.opencv.org/master/d5/d98/tutorial_mat_operations.html

    3.fps表示帧率,即每秒播放的帧数,一般25~40的帧率在视频、游戏中动作等就看起来很流畅,太高了并不好,显示屏刷新频率会跟不上而浪费GPU的使用,太低了会很卡...

    4.opencv貌似只支持avi格式的视频。

原文地址:https://www.cnblogs.com/darkchii/p/9142472.html

时间: 2024-10-02 04:48:31

OpenCV学习 —— 图片集合成视频的相关文章

OpenCV 学习(利用滤波器进行边缘提取)

OpenCV 学习(利用滤波器进行边缘提取) 通过低通滤波器,我们可以将图像平滑,相反的,利用高通滤波器可以提取出图像的边缘. Sobel 滤波器 Sobel 滤波器是一种有方向性的滤波器,可以作用在 X 方向或 Y 方向. 关于这种滤波器的理论介绍可以参考: https://en.wikipedia.org/wiki/Sobel_operator 函数原型如下: void Sobel( InputArray src, OutputArray dst, int ddepth, int dx, i

OpenCV学习之六: 使用方向梯度直方图估计图像旋转角度

在备份ltedecoder程序时,需要把此目录拷由到bak目录下,但decoder目录下有个大文件,不需要备份,还有日志问题,也不需要备份,如何实现呢?? 方法: cd /source-dir find . -name .snapshot -prune -o -print0 | cpio -pmd0 /dest-dir 解释: This command copies the contents of /source-dir to /dest-dir, but omits files and dir

Opencv学习笔记(六)SURF学习笔记

原创文章,转载请注明出处:http://blog.csdn.net/crzy_sparrow/article/details/7392345 本人挺菜的,肯定有非常多错误纰漏之处 ,希望大家不吝指正. 看了harris角点检測之后,開始研究SURF角点检測,发现挺复杂的,一时也仅仅了解了大概,把了解的东西总结下,以便下次深入学习. SURF角点检測算法是对SIFT的一种改进,主要体如今速度上,效率更高.它和SIFT的主要差别是图像多尺度空间的构建方法不同. 在计算视觉领域,尺度空间被象征性的表述

opencv学习笔记(四)投影

opencv学习笔记(四)投影 任选了一张图片用于测试,图片如下所示: 1 #include <cv.h> 2 #include <highgui.h> 3 using namespace std; 4 using namespace cv; 5 int main() 6 { 7 IplImage * src = cvLoadImage("cat.png", 0); //强制转化读取图像为灰度图 8 cvShowImage("灰度图像", s

OpenCV学习笔记(一)安装及运行第一个OpenCV程序

1.下载及安装 OpenCV是一套开源免费的图形库,主要有C/C++语言编写,官网: http://opencv.org/ .在 http://opencv.org/downloads.html 可以找到个版本和各种平台的程序包.OpenCV的Windows平台安装包是放在SourceForge.net网站. 我下了2.4.4版,大概217M.安装包其实就是一个压缩包,安装过程就是解压到某个文件夹.我是安装到 E:\Soft\opencv 目录,安装后文件夹如下: 我们只需要关注“build”文

OpenCV学习之八:RNG类 随机数生成函数的使用

OpenCV学习之八:随机数生成函数 运行结果: OpenCV学习之八:RNG类 随机数生成函数的使用,布布扣,bubuko.com

OpenCV学习笔记(01)我的第一个OpenCV程序(环境配置)

昨天刚刚考完编译原理,私心想着可以做一些与考试无关的东西了.一直想做和图像处理相关的东西,趁这段时间有空学习一下OpenCV,搭建环境真是一件麻烦的事情,搞了近三个小时终于OK了.先来张图: 大致描述一下步骤吧: 一.安装前准备 1.VS2012(网上看到很多用的VS2010,但是基本不影响) 2.OpenCV 安装包(我下载的是最新的2.4.9) 二.安装OpenCV 1.解压OPenCV 说是安装,其实就是解压,OpenCV的Windows安装程序就是一个自解压程序: 这里我解压到C:\Pr

opencv学习笔记(03)——遍历图像(迭代器法)

1 #include <opencv2\highgui\highgui.hpp> 2 #include <opencv2\imgproc\imgproc.hpp> 3 #include <opencv2\core\core.hpp> 4 5 void colorReduce(cv::Mat& img, int div=64); 6 7 8 int main() 9 { 10 cv::Mat img_orginal = cv::imread("F:\\i

OpenCV学习资源整理……

http://www.opencv.org.cn/opencvdoc/2.3.2/html/doc/tutorials/tutorials.html OpenCV(2.3.2)官方教程中文版 http://docs.opencv.org/doc/tutorials/tutorials.html OpenCV(2.4.9)官方教程英文版 http://docs.opencv.org/modules/refman.html OpenCV(2.4.9)API参考 http://www.cnblogs.