C++ 图像 和 视频 转换
C++
一.视频转图像 (保存每一帧)
可参考:https://www.cnblogs.com/miaojinmin799/p/6845462.html
#include<opencv2/highgui/highgui.hpp>#include<iostream>using namespace std;using namespace cv;int main(){VideoCapture cap("D:/1.wmv"); //读入视频Mat img; //图像变量char image[20]; //保存路径int i = 0; //图像计数while (cap.read(img)) //读取视频帧{sprintf(image, "%s%d%s", "..\\image", i++, ".jpg"); //指定保存路径imwrite(image, img); //保存图像}}
结果展示:
二。图片 转 视频 (该方法,生成视频会卡)
1. 首先将本地图像的路径保存成 .txt文件
参考我的博客:https://blog.csdn.net/wgf5845201314/article/details/78404756?locationNum=9&fps=1
2. 利用 .txt 生成视频
//#include "stdafx.h"
#include <iostream>
#include <opencv2/core/core.hpp>
#include <opencv2\highgui\highgui.hpp>
#include <string>
#include <fstream> using namespace std;int main()
{cout << "*********************开始图像转换为视频*********************" << endl;string imagepath("C:\\Users\\jingling\\Desktop\\TCP图像传输_C++\\client\\clent\\list.txt");int m = imagepath.find_last_of('.');string avipath = imagepath.substr(0, m) + ".avi";ifstream File;File.open(imagepath);if (!File.is_open()){cout << "图像无法读取,请检查图像路径是否有误!" << endl;return -1;}string imageName;int height;int width;double rate;cout << "请输入帧率:";cin >> rate;cout << "请输入图像的宽度:";cin >> width;cout << "请输入图像的高度:";cin >> height;cout << "请输入图像是否为彩色,是输入1,不是则输入0! ";int e;bool color = true;cin >> e;if (e == 0){color = false;}cv::VideoWriter writer;writer.open(avipath, CV_FOURCC('M', 'J', 'P', 'G'), rate, cv::Size(width, height), color);if (!writer.isOpened()){cout << "Could not open the writer for write!" << endl;return -1;}while (getline(File, imageName)){cv::Mat image = cv::imread(imageName);if (!image.data){cout << "Could not load image file..." << endl;return -1;}writer << image;}cout << "*********************生成视频成功!*********************" << endl;system("pause");return 0;
}
MATLAB
视频转图片
%%将视频转换成帧图片
clc;
clear;
%% 读取视频
video_path='video_test.avi';
video_obj=VideoReader(video_path); frame_number=video_obj.NumberOfFrames;%% 存储每一帧图片到文件夹image
if ~exist('image','dir')mkdir('image');disp('successfully create directory image!');
endfor i=1:frame_numberimage_name=strcat('./image/im_',num2str(i),'.jpg'); frame=read(video_obj,i); imwrite(frame,image_name,'jpg');
enddisp('all images are written into directory image')
图片转视频 (完美,不卡)
framesPath = 'C:\Users\jingling\Desktop\TCP图像传输_C++\client\clent\';%图像序列所在路径,同时要保证图像大小相同
videoName = 'C:\Users\jingling\Desktop\TCP图像传输_C++\client\clent\Bolt.avi';%表示将要创建的视频文件的名字
fps = 25; %帧率
startFrame = 0; %从哪一帧开始
endFrame = 507; %哪一帧结束 if(exist('videoName','file')) delete videoName.avi
end %生成视频的参数设定
aviobj=VideoWriter(videoName); %创建一个avi视频文件对象,开始时其为空
aviobj.FrameRate=fps; open(aviobj);%Open file for writing video data
%读入图片
for i=startFrame:endFrame fileName=sprintf('image%d',i); %根据文件名而定 我这里文件名是image0.jpg image1.jpg .... image507frames=imread([framesPath,fileName,'.jpg']); writeVideo(aviobj,frames);
end
close(aviobj);% 关闭创建视频
结果:
C++ 图像 和 视频 转换相关推荐
- python 图像和视频互相转换
python 图像和视频互相转换 预备条件 视频转图像 图像转视频 完整代码 预备条件 创建两个文件夹,将视频放在video文件夹里 我拍的视频,视频链接 提取码:t1zj 视频转图像 import ...
- 视频转换成图像序列、图像转换成视频(代码)
在目标检测领域,经常碰到将视频转换成图像序列,或者将图像序列转成视频.下面一段代码可实现此类功能.废话不多说,直接上代码 void Video2Pic() { cv::VideoCapture vc; ...
- 基于微软开源深度学习算法,用 Python 实现图像和视频修复
作者 | 李秋键 编辑 | 夕颜 出品 | AI科技大本营(ID:rgznai100) 图像修复是计算机视觉领域的一个重要任务,在数字艺术品修复.公安刑侦面部修复等种种实际场景中被广泛应用.图像 ...
- 图像与视频合成领域的集大成者,都在这里了!
点击上方,选择星标或置顶,不定期资源大放送! 阅读大概需要15分钟 Follow小博主,每天更新前沿干货 本文转载自:机器之心 | 作者:蛋酱.小舟 图像 / 视频合成领域的集大成者,就在这一篇了. ...
- 《音频、图像及视频技术》学习笔记
秒懂音视频开发学习笔记 01_移动通信技术的发展 02_重识图片 03_Windows开发环境搭建 04_Qt开发基础 05_重识声音 06_重识音频 07_音频录制01_命令行 08_音频录制02_ ...
- 基于OpenGL的Android系统视频转换功能实现
第1章OpenGL ES 3D图形编程首先OpenGL.OpenGL的英文全称是OpenGL Graphics Library,中午名称是开发式图形库.OpenGL为程序开发人员定义了一个 ...
- 【Python 字符视频】Python 实现将抖音视频转换成字符视频
以前就在抖音上看到过字符视频,直到昨天才突然想自己动手做一个,然后就利用各种博客,自己总结 兼 借鉴,终于完成了字符视频的制作 一.思路: 众所周知,视频是一帧一帧的图片组成的,所以我想的就是将抖音的 ...
- ffmpeg学习十三:图像数据格式的转换与图像的缩放
一.实现图像数据格式转换与图像缩放的三个重要函数 ffmpeg实现图像数据格式的转换以及图片的缩放的功能,主要使用swscale.h中的三个函数: sws_getContext() sws_scale ...
- 适用于 Windows 和 macOS 的几款免费视频转换软件
您是否曾经尝试过在网站上上传视频格式不受支持? 甚至更糟的是,当您所需的视频无法在您的设备上播放时.在这种情况下,我们会思考为什么这些格式不是在所有地方都受支持.虽然目前似乎无法实现这种可能性,但幸运 ...
最新文章
- windows 2003系统目前最完善最完美的安全权限方案(转)
- 现实交互动作和现实环境交互的魅力
- 硅谷来信 | 投资人张璐:AI正在造就超级人类,医疗应用潜力无穷
- mysql 按照指定字段拼接_mysql 根据某个字段将多条记录的某个字段拼接成一个字段...
- 使用HSRP和SLB实现服务器群负载均衡和冗余
- java开发平台普元_java开发平台的两种实现模式
- Java多线程的三种实现方式(重点看Collable接口实现方式)
- 每个tabpage中都有一个dategridview_宇宙中每个原子里都隐藏着一个巨大的秘密
- 【leetcode 简单】第四十二题 阶乘后的零
- Ubuntu18.04 安装 Idea 2018.2
- redis数据类型语法及与java连接
- 使用Foobar2000在PC上播放.ios音乐
- 【线性模型引论】王松桂著 课后习题2.2参考答案
- 深圳Python培训:100天从新手到Python大师
- 小心 transmittable-thread-local 的这个坑
- 开发人员如何规划自己的职业生涯
- 运营能力提升学习(一)了解运营是什么
- 再学 GDI+[57]: 路径 - Widen
- 基于cesium实现城市查询并定位
- linux 循环一段ip区间,Shell脚本实现判断IP地址是否在一个ip段内代码分享