opencv 多组图片 合成视频动画avi

首先 下载编码器:XviD-1.1.3 (视频编码器)

 

编写程序代码:

#include <opencv\cv.h>
#include <opencv\highgui.h>
#include <opencv\cxcore.h>
#include <stdlib.h>
#include <stdio.h>
 

 
int main(int argc, char* argv[])
 
{
 
CvSize size = cvSize(480,360);
 
double fps = 15;
 

//创建一个写视频 设备writer 
CvVideoWriter* writer = cvCreateVideoWriter("d:\\out.avi",CV_FOURCC('X','V','I','D'),fps,size);
 


/*读入一个文件夹下的所以图片*/
 
int image_id = 0;
 
char filename[256];
 

sprintf(filename , "C:\\Users\\zxl\\Desktop\\Image\\%d.jpg" , image_id );
 

//加载图像
 
IplImage* src = cvLoadImage(filename);
 

if(!src)
 
{
 
return 0;
 
}
 

//为resize后的图像分配空间
 
IplImage* src_resize = cvCreateImage(size,8,3);
 


cvNamedWindow("avi");
 

while(src)
 
{
 
/*显示图像 本步骤不是必须的*/
 
cvShowImage("avi",src_resize);
 
cvWaitKey(1);
 

/*resize图像 使得写入视频文件的图像src_resize 与 视频文件的宽 高 是一样的 视频文件的宽 高是CvSize size = cvSize(480,360);*/
 
cvResize(src , src_resize);
 

/*将图像src_resize 写入到视频设备writer*/
 
cvWriteFrame(writer , src_resize);
 

/*释放内存空间*/
 
cvReleaseImage(&src);
 

//加载文件夹中的下一幅图像 
image_id++;
 
sprintf(filename , "C:\\Users\\zxl\\Desktop\\Image\\%d.jpg" , image_id );
 
src = cvLoadImage(filename);
 



}
 

/*释放写设备*/
 
cvReleaseVideoWriter(&writer);
 

/*释放图像空间*/
 
cvReleaseImage(&src_resize);
 

return 0;
 
}


 

在Python中使用OpenCV库将图片合成视频是一个相对简单的任务,主要涉及到读取图片序列、将它们逐帧编码为视频帧,并保存为视频文件。下面是这个过程的一个简单介绍: 1. 首先,需要安装OpenCV库,可以使用pip命令安装: ```bash pip install opencv-python ``` 2. 接着,编写Python脚本来合成视频。首先导入必要的模块,读取图片序列,然后创建一个视频编写器对象,该对象定义了输出视频的属性,如分辨率、帧率等。 3. 使用循环读取每张图片,将每张图片转换为视频帧,并使用视频编写器写入帧。 4. 最后,关闭视频编写器,释放资源。 下面是一个简单的代码示例,展示了如何实现这个过程: ```python import cv2 import numpy as np # 图片文件的前缀和后缀 image_folder = 'path_to_images/' # 图片文件夹路径 image_prefix = 'image_' image_extension = '.jpg' # 创建视频编写器对象 fourcc = cv2.VideoWriter_fourcc(*'XVID') video_width = 640 # 视频宽度 video_height = 480 # 视频高度 frame_rate = 24 # 帧率 out = cv2.VideoWriter('output.avi', fourcc, frame_rate, (video_width, video_height)) # 循环读取图片并写入视频 for i in range(1, 26): img_name = image_folder + image_prefix + str(i) + image_extension img = cv2.imread(img_name) if img is None: break # 如果图片尺寸和视频尺寸不匹配,则调整图片尺寸 img = cv2.resize(img, (video_width, video_height)) out.write(img) # 释放资源 out.release() cv2.destroyAllWindows() ``` 在这个代码中,首先指定了图片所在的文件夹以及图片的命名规则。然后创建了一个视频编写器对象,指定了编码格式和帧率。之后通过循环读取图片文件夹中所有的图片文件,将它们写入到视频文件中。最后释放了视频编写器占用的资源。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值