OpenCV读取文件夹下的图片生成视频(mp4格式)

本文介绍了如何使用Python将图片文件批量转换为视频,通过`image_to_video`函数实现,从指定目录读取图片,按顺序排列并创建一个MP4格式的视频文件。
  • 定义目录
file = 'C:/Users/jmWang/Desktop/sample_data/GSM/'  # 图片目录
output = 'C:/Users/jmWang/Desktop/1.mp4'
import os
import cv2
from PIL import Image
  • 主要代码
def image_to_video(image_path, media_path):
    '''
    图片合成视频函数
    :param image_path: 图片路径
    :param media_path: 合成视频保存路径
    :return:
    '''
    # 获取图片路径下面的所有图片名称
    image_names 
使用OpenCV读取并显示图片,然后将这些图片生成视频可以通过以下两种方式实现: ### 使用Python实现 以下是一个Python示例代码,它可以读取指定文件夹下的图片,显示这些图片,并将它们合成为一个MP4格式视频: ```python import os import cv2 from PIL import Image def image_to_video(image_path, media_path): # 获取图片路径下面的所有图片名称 image_names = os.listdir(image_path) # 对提取到的图片名称进行排序 image_names.sort(key=lambda n: int(n[:-4])) # 设置写入格式 fourcc = cv2.VideoWriter_fourcc('M', 'P', '4', 'V') # 设置每秒帧数 fps = 5 # 读取第一个图片获取大小尺寸,因为需要转换成视频图片大小尺寸是一样的 image = Image.open(os.path.join(image_path, image_names[0])) # 初始化媒体写入对象 media_writer = cv2.VideoWriter(media_path, fourcc, fps, image.size) for image_name in image_names: im = cv2.imread(os.path.join(image_path, image_name)) # 显示图片 cv2.imshow('Image', im) # 等待用户按键,这里设置为1000/fps毫秒 cv2.waitKey(int(1000/fps)) media_writer.write(im) print(image_name, '合并完成!') # 释放媒体写入对象 media_writer.release() # 关闭所有OpenCV窗口 cv2.destroyAllWindows() print('视频写入完成!') # 定义目录 file = 'C:/Users/jmWang/Desktop/sample_data/GSM/' # 图片目录 output = 'C:/Users/jmWang/Desktop/1.mp4' image_to_video(file, output) ``` 上述代码通过Python结合OpenCV库,能够读取指定文件夹下的图片,依次显示这些图片,并将它们合成一个MP4视频,最后释放资源并关闭窗口 [^4]。 ### 使用C++实现 下面是一个C++示例代码,它可以读取一系列图片,显示这些图片,并将它们合成为一个MP4格式视频: ```cpp #include<opencv2/opencv.hpp> #include<iostream> using namespace cv; using namespace std; int main() { // 读取第一帧图像,获取长宽 Mat src = imread("1.bmp"); int width = src.cols; int height = src.rows; // 配置视频参数 VideoWriter writer; writer.open("out.mp4", VideoWriter::fourcc('m', 'p', '4', 'v'), 15, Size(width, height), 1); char savefile[200]; Mat srcc; for (int i = 0; i < 500; i++) { for (int j = 1; j <= 6; j++) { sprintf(savefile, "%d.bmp", j); srcc = imread(savefile, 1); if (srcc.empty()) { cout << "图片读取完了" << endl; break; } // 显示图片 imshow("Output Video", srcc); waitKey(1000 / 15); writer.write(srcc); } } // 关闭所有OpenCV窗口 destroyAllWindows(); return 0; } ``` 此代码运用C++结合OpenCV库,实现了读取一系列图片,显示图片并将它们合成一个三千帧、帧率为15的MP4视频,最后关闭窗口 [^3]。
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值