IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> OpenCV(c++)长视频截短 -> 正文阅读

[人工智能]OpenCV(c++)长视频截短


为什么不用pr,剪映,PotPlayer呢?我手残,我不会
还有用这些去搞一条就15帧,1s不到的视频,真是杀鸡用牛刀

1.opencv读取视频帧并保存

将长视频打散成一帧一帧的

#include <opencv2/opencv.hpp>
#include<iostream>

using namespace std;
using namespace cv;

int main()
{
	VideoCapture capture("C:/Users/wwy/Desktop/test.mp4");//视频路径
	int i = 0;
	while (1)
	{
		i++;
		Mat img;
		capture >> img;
		if (img.empty()) {
			printf("播放完成\n");
			break;
		}
		imshow("res", img);//显示图片
		string ii = std::to_string(i);
		string path = "C:/Users/wwy/Desktop/111/" + ii+ ".jpg";//保存路径
		imwrite(path,img);
		waitKey(1);
	}

	waitKey(0);
	system("path");
	getchar();
	return 0;
}


2.opencv多帧合成视频

把图片合成视频,图片放在文件夹里面,命名格式应该为:1.jpg,2.jpg,3.jpg…
目前只有MP4格式成功了,其他的没有试

// TestForOnlyC++.cpp : 定义控制台应用程序的入口点。
//

/*
为了保证视频帧顺序,对图片命名要有顺序逻辑,对于本代码,图片命名格式需要为1.jpg、2.jpg...
*/

#include <fstream>
#include <iostream>
#include <string>
#include <sstream>
#include <vector>
#include<io.h>
#include <opencv2/opencv.hpp>

using namespace std;
using namespace cv;
void getAllFiles(string path, vector<string>& files);
//测试
int main()
{
	int frames = 15;//一条视频多少帧
	string DATA_DIR = "C:/Users/wwy/Desktop/111/";//图片所在文件夹

	vector<string> files;
	char * DistAll = (char*)"AllFiles.txt";
	getAllFiles(DATA_DIR, files);//所有文件与文件夹的路径都输出
	int size = files.size();
	cout << "图片一共"<<size <<"张"<< endl;
	int videoNum = size / frames;
	int MaxFrame = videoNum * (frames-1);
	cout << "可以制作" << videoNum << "条视频" << endl;
	
	int video_wight = 480;
	int video_hight = 320;
	


	for (int i = 1; i < videoNum + 1; i++) {
		cv::VideoWriter Writer;
		string i_string= to_string(i);
		string filepath = "C:/Users/wwy/Desktop/111/1/"+i_string+".mp4";
		Writer.open(filepath, VideoWriter::fourcc('M', 'P', '4', '2'), 25, Size(video_wight, video_hight), 1);
		if (!Writer.isOpened())
		{
			cout << "无法保存视频" << endl;
		}
		else {
			for (int cou = frames*i-(frames-1); cou < frames * i+1&& MaxFrame; cou++)
			{
				string ii = to_string(cou);
				string path = DATA_DIR + ii + ".jpg";
				Mat src = imread(path);
				resize(src, src, Size(video_wight, video_hight), 0, 0, INTER_LINEAR);
				//imshow("res", src);//显示图片
				cout << path << endl;
				Writer.write(src);//输出视频
			}
			cout << "保存成功" << endl;
		}
		Writer.release();
	}
	waitKey(0);
	return 0;
}

void getAllFiles(string path, vector<string>& files)
{
	//文件句柄  
	intptr_t hFile = 0;
	//文件信息  
	struct _finddata_t fileinfo;  //很少用的文件信息读取结构
	string p;  //string类很有意思的一个赋值函数:assign(),有很多重载版本
	if ((hFile = _findfirst(p.assign(path).append("\\*").c_str(), &fileinfo)) != -1)
	{
		do
		{
			if ((fileinfo.attrib &  _A_SUBDIR))  //判断是否为文件夹
			{
				if (strcmp(fileinfo.name, ".") != 0 && strcmp(fileinfo.name, "..") != 0)
				{
					files.push_back(p.assign(path).append("/").append(fileinfo.name));//保存文件夹名字
					getAllFiles(p.assign(path).append("/").append(fileinfo.name), files);//递归当前文件夹
				}
			}
			else    //文件处理
			{
				files.push_back(p.assign(path).append("/").append(fileinfo.name));//文件名
			}
		} while (_findnext(hFile, &fileinfo) == 0);  //寻找下一个,成功返回0,否则-1
		_findclose(hFile);
	}
}

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-04-26 11:41:49  更:2022-04-26 11:43:05 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 9:49:11-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码