opencv 将视频读为图片放在指定文件夹中/将指定文件夹中图片读出并合成视频 cvCreateVideoWriter试分析

opencv学习笔记(五)-将图片写成视频 这次我要用opencv把一堆图片合成一个avi的视频,图片素材可以自己用KMPlayer制作,程序如下: +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#include "cv.h" #include "highgui.h"int main() { CvS 阅读详情
#include <fstream>
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include <opencv/cv.h>
#include <opencv/highgui.h> 
 
////////////////////////////////////////////////////////////////////////
//
// 该程序实现视频和图片的相互转换.
// Image_to_video()函数将一组图片合成AVI视频文件.
// Video_to_image()函数将AVI视频文件读入,将每一帧存储为jpg文件.
//
////////////////////////////////////////////////////////////////////////


#define NUM_FRAME 300 //只处理前300帧,根据视频帧数可修改


void Video_to_image(char* filename)
{
printf("------------- video to image ... ----------------\n");

//初始化一个视频文件捕捉器
CvCapture* capture = cvCaptureFromAVI(filename);

//获取视频信息
cvQueryFrame(capture);
int frameH    = (int) cvGetCaptureProperty(capture, CV_CAP_PROP_FRAME_HEIGHT);
int frameW    = (int) cvGetCaptureProperty(capture, CV_CAP_PROP_FRAME_WIDTH);
int fps       = (int) cvGetCaptureProperty(capture, CV_CAP_PROP_FPS);
int numFrames = (int) cvGetCaptureProperty(capture, CV_CAP_PROP_FRAME_COUNT);
printf("\tvideo height : %d\n\tvideo width : %d\n\tfps : %d\n\tframe numbers : %d\n", frameH, frameW, fps, numFrames);

//定义和初始化变量
int i = 0;
IplImage* img = 0;
char * image_name=NULL;
//char image_name[20];
image_name=(char *)malloc(20*sizeof(char)); //动态分配内存

cvNamedWindow( "mainWin", CV_WINDOW_AUTOSIZE );

//读取和显示
while(1)
{
  
   img = cvQueryFrame(capture); //获取一帧图片
   cvShowImage( "mainWin", img ); //将其显示
   char key = cvWaitKey(20);
  
   sprintf(image_name, "%s%d%s", "d:\\images\\image", ++i, ".jpg");//保存的图片名
    //如何将这些图片保存到一个指定的文件夹中? //"d:\\images\\image" 将图片存放在d盘images文件夹下                
    cvSaveImage(image_name, img);   //保存一帧图片
   if(i == NUM_FRAME) break;
}

cvReleaseCapture(&capture);
cvDestroyWindow("mainWin");
}

 

void Image_to_video()
{
int i = 0;
IplImage* img = 0;
char * image_name=NULL;
//char image_name[20];
image_name=(char *)malloc(20*sizeof(char)); //动态分配内存

printf("------------- image to video ... ----------------\n");

//初始化视频编写器,参数根据实际视频文件修改
CvVideoWriter *writer = 0;
int isColor = 1;
int fps     = 25; // or 30
int frameW = 400; // 744 for firewire cameras
int frameH = 240; // 480 for firewire cameras
writer=cvCreateVideoWriter("out10.avi",CV_FOURCC('X','V','I','D'),fps,cvSize(frameW,frameH),isColor);

printf("\tvideo height : %d\n\tvideo width : %d\n\tfps : %d\n", frameH, frameW, fps);

//创建窗口
cvNamedWindow( "mainWin", CV_WINDOW_AUTOSIZE );

while(i<NUM_FRAME)
{
   sprintf(image_name, "%s%d%s", "d:\\images\\image", ++i, ".jpg");//读取d盘images文件夹下图片
   img = cvLoadImage(image_name);
   if(!img)
   {
    printf("Could not load image file...\n");
    exit(0);
   }
   cvShowImage("mainWin", img);
   cvWriteFrame(writer, img);
   //char key = cvWaitKey(20);
   cvReleaseImage(&img);
   if( cvWaitKey(20) >= 0 ) break;

}

cvReleaseVideoWriter(&writer);
cvDestroyWindow("mainWin");
}


int main(int argc, char *argv[])
{

   char filename[13] = "test.avi";

   Video_to_image(filename); //视频转图片

   Image_to_video();    //图片转视频

return 0;
}
//--------------------------------------------------------------------------------

<strong></strong>

关于cvCreateVideoWriter

创建视频文件写入器

typedef struct CvVideoWriter CvVideoWriter;
CvVideoWriter* cvCreateVideoWriter( const char* filename, int fourcc, double fps, CvSize frame_size, int is_color=1 );
filename 
输出视频文件名。
fourcc 
四个字符用来表示压缩帧的codec 例如,CV_FOURCC('P','I','M','1')是MPEG-1 codec, CV_FOURCC('M','J','P','G')是motion-jpeg codec等。 在Win32下,如果传入参数-1,可以从一个对话框中选择压缩方法和压缩参数。
fps 
被创建视频流的帧率。
frame_size 
视频流的大小。
is_color 
如果非零,编码器将希望得到彩色帧并进行编码;否则,是灰度帧(只有在Windows下支持这个标志)。

函数cvCreateVideoWriter创建视频写入器结构。

 对于CV_FOURCC逐个调试,运行结果:

<p>//             各种格式 ——输出视频名称  视频大小 对应编码器的代号</p><p>//CV_FOURCC('F','L','V','1')——out1.avi 5.60M  FLV1 codec 
//CV_FOURCC('P','I','M','1')——out2.avi 5.63M  MPEG-1 codec  
//CV_FOURCC('M','P','4','2')——out3.avi 4.95M  MPEG-4.2 codec 
//CV_FOURCC('M','J','P','G')——out4.avi 12.2M  motion-jpeg codec
//CV_FOURCC('D','I','V','3')——out5.avi 4.90M  MPEG-4.3 codec 
//CV_FOURCC('D','I','V','X')——out6.avi 5.08M  MPEG-4 codec 
//CV_FOURCC('U','2','6','3')——out7.avi 0M     H263 codec 
//CV_FOURCC('I','2','6','3')——out8.avi 0M     H263I codec 
//CV_FOURCC('X','V','I','D')——out9.avi 5.08M


//OpenCV中通过CV_FOURCC生成指定编码器的代号
//若将CV_FOURCC(……)改成 -1 将会打开一个编码器的选择窗口.
</p>


173、NPU的编译器开发:开源社区贡献指南 本文分享了在NPU编译器开源社区贡献的经验心得。作者通过实际案例(如卷积维度错误、NaN输出等)阐述了NPU编译器开发的特殊性:硬件迭代快、边界条件复杂、厂商代码不可全信。提出有价值的贡献应聚焦硬件适配测试、性能剖析工具和反模式文档三类内容。强调用实测数据沟通、主动承担维护责任、保持代码通用性等社区协作技巧,并建议通过RFC提前沟通、附硬件实测数据等方式提高PR通过率。最后指出,NPU编译器开发是与聪明人共同填坑的过程,鼓励开发者提交"有诚意的代码"而非完美代码。 阅读详情

相关推荐

简单记录一次拿网站后台的过程

本文章重在让大家了解拿后台的逻辑与流程,请不要利用此文章的内容对别人的网站进行攻击破坏,否则后果自负,作者不承担任何责任。

kk的博客 918

关于cvCreateFileCapture以及cvCreateVideoWriter的avi读写方法(Xcode)

Mac下用Xcode编译OpenCV时avi文件总会出问题,主要还是视频编码方式的原因,在此我来总结一下这两个函数在Mac下的具体使用方法: 1、cvCreateFileCapture 使用格式: char name[]="/Users/sean/Documents/untitled folder/2.avi"; CvCapture* capture = cvCrea

SSeanXu的博客 3535

UDP_千兆光通信(四)Tri Mode Ethernet MAC ip核

其中 Transmit Engine 从 AXI-Stream TX 接口接收数据,并添加前导码 Preamble、帧起始界定符 SFD、帧校验序列 FSC 等,并在必要时(长度小于最小 MAC 帧长度)填充数据,因此在使用 TEMAC 时,MAC 帧的这几个部分就不需要我们自己添加了(不过其他的 MAC 帧部分,可选的帧过滤器 Frame Filter 用于过滤与一组可配置过滤器匹配的帧,一般用于过滤掉目的 MAC 地址与本设备不一致的帧,TEMAC 默认开启帧过滤器。默认值为使用64位宽的计数器。

lzr232的博客 1774

Learning OpenCV: cvCreateVideoWriter to save AVI video file

using cvCreateVideoWriter to save images to AVI video files.

chenjun_robot的博客 339

如何在VSCode中无缝集成Azure OpenAI GPT-5-codex?保姆级配置教程

本文详细介绍了在VSCode中无缝集成Azure OpenAI GPT-5-codex的完整配置教程,涵盖环境准备、Azure资源创建、本地配置、VSCode插件安装及高级定制。通过Codex CLI和config.toml文件配置,开发者可快速实现AI辅助编程,大幅提升代码生成、错误诊断和文档编写效率。

weixin_29268637的博客 555

网络调试和分析工具 Proxyman Premium

它支持MacOS、iOS和iPadOS等操作系统,提供丰富的功能,如查看和编辑HTTP/HTTPS请求和响应、设置断点、过滤请求等。Proxyman Premium还支持WebSocket、GraphQL和gRPC等现代网络协议调试,并通过直观且图形化的操作界面,使用户能高效地监控和操纵网络数据流。此外,它还具备多种高级功能,如WebSocket支持、DNS欺骗、自定义SSL证书等,为开发人员提供极大的便利。同时,由于软件版本更新和界面调整,上述步骤可能会有所变化,建议您参考最新版本的官方文档进行操作。

llhf688的博客 2000

用opencv调整视频大小

// videoProcess.cpp : 定义控制台应用程序的入口点。 // #include"stdafx.h" #include #include #include int main(int argc, char *argv[]) { CvCapture* capture = cvCaptureFromAVI("D:\\video\\sunglass\\d

7481

Android 蓝牙——概述(一)

Profiles (蓝牙应用规范),它从应用场景的角度为蓝牙技术的使用制定了不同的规范。这也是和大众日常生活接触最多的一部分。蓝牙支持很多Profiles:MAP:(MessageAccessProfile),短信访问协议,允许设备间的信息交换,短信。使用场景:智能车载中同步短信等信息。HFP:(Hands-free Profile),电话免提协议,让蓝牙设备(如蓝牙耳机/车机)可以控制电话,如接听、挂断、拒接等。

小旭的专栏 3492

opencv cvCreateVideoWriter()参数

1、cvCreateVideoWriter()中的第二个参数:avi对应的编码格式分别为: CV_FOURCC('P','I','M','1') = MPEG-1 codec  CV_FOURCC('M','J','P','G') = motion-jpeg codec (does not work well)  CV_FOURCC('M', 'P', '4', '2') = MPEG-4.

我是一个逗比 4155

Asterisk中MixMonitor之支持接通后录音

一、概述 当我们使用开源的IPPBX(比如Elastix-2.5/4.0或者ISSABEL-4.0/FreePBX)的时候Outbound和Inbound路由(RingGroup/FollowMe)中有一个Call Recording选项,其值包括:Allow、Record immediately、Record On Answer和Nerver。当选择为Record On Answer,其实就是MixMonitor自带一个b选项。 尽管Asterisk自带的MixMoni...

宽简厚重—博约 1156

ABAP 后台作业里的消息机制:把 MESSAGE 写对,避免作业莫名取消

SAP后台作业消息处理机制解析 本文深入剖析了SAP系统中后台作业的消息处理机制,揭示了前台与后台执行环境的关键差异。核心发现包括: 后台作业对消息的处理规则: 所有消息写入Job log而不显示 根据消息类型决定是否继续执行 W警告在列表处理阶段会被自动转为E错误 关键异常处理: 通过error_message可捕获E/A类型消息 A类型消息会触发隐式数据库回滚 未被捕获的E/A消息将导致作业中断 实用解决方案: 将业务提示改为S或I类型 使用DISPLAY LIKE保持前台体验 通过error_mess

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 2216

cvCreateVideoWriter 创建视频文件写入器 用法

创建视频文件写入器>   typedef struct CvVideoWriter CvVideoWriter;   CvVideoWriter* cvCreateVideoWriter ( const char* filename, int fourcc, double fps, CvSize frame_size, int is_color=1 );   1、file

Alinxxl的博客 1641

在 SAP Gateway 主机上把 SAML 2.0 配置为 Service Provider:从架构到落地的完整实战

本文详细介绍了在SAP Gateway主机上配置SAML 2.0作为Service Provider的全流程。从概念梳理到实际操作,涵盖了关键步骤:启用本地SP服务、通过反向代理导出元数据、在IdP侧完成对接、配置信任关系与Artifact绑定、设置NameID身份联合等核心环节。特别强调了HTTP Artifact绑定的背道通信机制和证书配置要点,并针对常见错误提供了排障指引。文章注重实操性,结合SAP官方文档与社区最佳实践,为运维团队提供了一套完整的SAML SSO实施框架。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 150

小工具--OpenCV图像集做成视频

做数字图像处理研究时,很多情况下,我们从专业网站上得到的是同一个场景下连续的图片,但是我们要求的测试数据可能是视频文件。怎么办?其实我们可以从视频集生成视频文件。同样的道理,我们手头上有视频文件,也可以从视频文件提取一帧一帧的图像(这将这我下一篇的博文中提到)。很久以前的做的小工具了,使用起来比较方便,分享给大家。     假设我们在E盘下的images文件夹下有图像名称为frame_0000到

令狐少侠 1675

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

OpenCV学习(七)之写入AVI视频文件

示例代码: #include "highgui.h" #include "cv.h" using namespace cv; //write a avi video int main(int argc,char** argv) { CvCapture* capture = 0; capture = cvCreateFileCapture("test.avi"); if(!capture

ZYTTAE的专栏 2540

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

cvCreateVideoWriter函数使用

cvCreateVideoWriter函数使用 2011-11-04 15:47  typedef struct CvVideoWriter CvVideoWriter; CvVideoWriter* cvCreateVideoWriter( const char* filename, int fourcc, double fps, CvSize frame_size,

zht9961020的专栏 4008

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Opencv写视频文件

原文地址:Opencv写视频文件作者:Single  Opencv写视频文件核心函数       cvCreateVideoWriter      cvWriteFrame       cvReleaseVideoWriter cvCreateVideoWriter      cvCreateVideoWriter (const char* filename, int fourcc, d

guo8113的专栏 995

opencv录制视频——CvVideoWriter

〇、参考 https://blog.youkuaiyun.com/zbbmm/article/details/76696979 一、几处关键的代码 1.CvVideoWriter *writer = 0; 2.writer=cvCreateVideoWriter(name_str.c_str(),CV_FOURCC(‘D’,‘I’,‘V’,‘X’),this-&gt;fps,cvSize(frameW,fra...

weixin_43860247的博客 1401

【python】OpenCV—Video to Imag / Image to Video

文章目录1 计算总帧数2 计算 Frames per second(FPS)3 Video to Image4 Image to Video 1 计算总帧数 import cv2 video_cap = cv2.VideoCapture('/home/Downloads/2.mp4') frame_count = 0 while (True): ret, frame = video_cap.read() if ret is False: break fram..

bryant_meng 9901

OpenCV学习笔记04--图片和视频的保存

例六:保存图片新加入的函数:1.cvSaveImage(outImageName, outImage);  用cvSaveImage(outImageName, outImage)即可方便的保存图片。当然为了安全,可以先将原图进行拷贝,再进行保存2.cvCopy(frame, outImage, NULL);  将原图拷贝到新图 #include "stdafx.h" #include"hi...

My heart will go on 936

CvvImage头文件和源文件

CvvImage.h代码如下: #include "opencv/cv.h" #include "opencv/highgui.h" #pragma once #ifndef CVVIMAGE_CLASS_DEF #define CVVIMAGE_CLASS_DEF #include "opencv.hpp" class CvvImage { public: CvvImage(); ...

any1234567890的博客 1735

opencv的图像读写框架

cvSaveImage/cvLoadImage函数用于保存和读取图像,两者的结构基本相似。下面我们主要分析cvSaveImage函数的实现。cvLoadImage函数位于"OpenCV/otherlibs/highgui/loadsave.cpp"文件:代码: 全选CV_IMPL IplImage*cvLoadImage( const char* filename, int iscolor ){ 

Solidfish的专栏 2256

关于opencv 中cvCreateVideoWriter函数返回NULL情况的总结

在对读入视频处理后进行保存的时候,出现了cvCreateVideoWriter返回值是NULL的情况。看了网上的一些大致说法,简单的总结如下: 法一: 通过调用cvGetCaptureProperty(capture,CV_CAP_PROP_FOURCC),获取原视频的编码方式,我自己试了一下,没有成功,看函数说明显示:cvGetCaptureProperty该函数读取视频属性只对输入摄像头有

mengyanshizhe的专栏 2800

使用cvCreatVideoWriter和cvWriteFrame将图片或数据帧写入到AVI中

cvCreateVideoWriter 创建视频文件写入器 typedef struct CvVideoWriter CvVideoWriter; CvVideoWriter* cvCreateVideoWriter( const char* filename, int fourcc, double fps, CvSize frame_size, int is_color=1 ); fil

wanglp094的专栏 1万+

cvCreateVideoWriter的用法

cvCreateVideoWriter   创建视频文件写入器   typedef struct CvVideoWriter CvVideoWriter;   CvVideoWriter* cvCreateVideoWriter ( const char* filename, int fourcc, double fps, CvSize frame_size, i

wanglp094的专栏 1万+
上一篇: OpenCV中特征点提取和匹配的通用方法
下一篇: OpenCV SURF例子注解
DVStream
博客等级 码龄15年 50粉丝 22原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值