① 在opencv中可以获得视频的分辨率,帧率,时间等信息,怎么用这些信息计算视频文件的大小和码率
你清楚分辨率,帧率是什么么?
分辨率表示一张图片的像素数比如1024*1024的分辨率其图像大小就是1M(不包括头文件占用的,而且是未压缩的图片),帧率代表每秒有多少张图片,假设一秒有24张1024*1024的图片,那么每秒的数据量就为24M,视频大小(未压缩的就为24M),当然真彩数据(RGB)需要X3,
码率这个就要看你视频的压缩情况了,不同的格式都有不同的码率,具体参考网络
② opencv什么视频编码格式视频文件最小
一般来说是flv,至于为什么?自己去看视频编码,网络。
视频文件的一般构成是:
文件头+文件内容,
文件内容一般是图像的压缩格式,这种压缩就是对相邻的若干帧的一些处理,比如背景,人物的运动规律,色彩等进行尽可能的压缩,由于各种格式采取的编码方式和封装方式不同大小不一样。一般对于同一个视频mkv格式文件大小是最大的,flv是比较小的了。
对opencv说一下:
用opencv处理视频,假设原视频过大,一般是由于分辨率过大(通过重新定义画面大小,处理视频写入一个新的视频文件;也可以用格式工厂转成相应的低分辨率格式)或者时间过长(可以裁减或者定义段,将视频通过帧进行分段处理,每经过多少帧分成一段)导致的。
采取上诉方式可以有效降低程序所需要处理的数据。
③ 调用opencv的函数cvCreateVideoWriter生成的视频太大(几G),怎么生成小的视频
1、加个h.263的压缩类把图像压缩了再储存。
2、H.263是由ITU-T制定的视频会议用的低码率视频编码标准,属于视频编解码器。H.263最初设计为基于H.324的系统进行传输(即基于公共交换电话网和其它基于电路交换的网络进行视频会议和视频电话)。后来发现H.263也可以成功的应用与H.323(基于RTP/IP网络的视频会议系统),H.320(基于综合业务数字网的视频会议系统),RTSP(流式媒体传输系统)和SIP(基于因特网的视频会议)。
3、视频(Video)泛指将一系列静态影像以电信号的方式加以捕捉、纪录、处理、储存、传送与重现的各种技术。连续的图像变化每秒超过24帧(frame)画面以上时,根据视觉暂留原理,人眼无法辨别单幅的静态画面;看上去是平滑连续的视觉效果,这样连续的画面叫做视频。视频技术最早是为了电视系统而发展,但现在已经发展为各种不同的格式以利消费者将视频记录下来。网络技术的发达也促使视频的纪录片段以串流媒体的形式存在于因特网之上并可被电脑接收与播放。视频与电影属于不同的技术,后者是利用照相术将动态的影像捕捉为一系列的静态照片。
④ opencv可以将视频大小压缩减小内存吗
狸窝全能水平转换器就可以办到,不仅可以转换视频格式,同时对于视频编辑处理也不在话下。压缩视频还能做到无损压缩哦!我将简单的操作步骤也一起分享给你了,感兴趣的话你可以试试。
⑤ opencv如何将连续图像压缩成视频
这是我之前写的一段代码
#include "cv.h"
#include "highgui.h"
#include <stdio.h>
/*******************************************************
图片转换为视频
*******************************************************/
//void ImagetoVideo()
main()
{
int i = 0;
//初始化视频编写器,参数根据实际视频文件修改
CvVideoWriter* writer = 0;
int isColor = 1;
//int fps = 25; // or 30
double fps = 6;
int frameW = 1920;
int frameH = 1080;
writer = cvCreateVideoWriter("decoderout.avi",CV_FOURCC('X','V','I','D'),fps, cvSize(frameW, frameH), isColor);
printf("\tvideo height:%d\n\tvidoe width:%d\n\t\fps:%d\n",frameH, frameW, fps);
int startframe = 1; //图片开始帧号
int endframe = 58;
char cur_fn[255];
char* prefix = "F:\\视频增强\\视频解码\\videoDecoder5-7-例程-先得到每一个nal\\img\\";//图片序列的路径
char* ext = ".bmp"; //序列图片的后缀名
//存储视频文件
IplImage* img = 0;
// int nFrames = 50;
// for (i = 0; i < nFrames; i++)
// {
// cvWriteFrame(writer,img); //写入一帧到一个视频文件中 cvGrabFrame(capture);
// }
while (startframe <= endframe)
{
strcpy(cur_fn,"");
sprintf(cur_fn,"%s%d%s",prefix,startframe,ext);
img = cvLoadImage(cur_fn,isColor);
if (!img)
{
printf("can not open file\n");
return ;
}
cvWriteFrame(writer,img);
cvWaitKey(20);
startframe++;
cvReleaseImage(&img);
}
//创建窗口
// cvNamedWindow("mainWin",CV_WINDOW_AUTOSIZE);
// cvShowImage("mainWin",img);
// cvWaitKey(20);
//释放视频存储器
cvReleaseVideoWriter(&writer);
}
⑥ OPenCV保存非压缩(全帧)AVI 文件。如何保存非压缩AVI文件
我也在学opencv呢,在学习第二个小程序吧。。。
我也遇到一样的问题,你是不是也是播放avi时弹出窗口(仅显示第一帧)后立刻退出?
以下三个都是从网上搜到的原因
1 解码器原因
2 avi(数码相机拍的)里面包含了声音
3 好像之前比较早版本的opencv不支持清晰度大于300左右成200左右的视频
⑦ opencv 能读取大视频吗
你按帧读取,不要超过1G的一般不会有问题;
如果超过1G,最好事先分割一下。
另外,尽量不要用OpenCV生成视频,很容易出错。
如有具体问题再联系。祝好运!
补充回答:
你用的什么压缩方式?如果是dvix的就可以支持。
⑧ opencv怎么写视频文件
#include<cv.h>#include<highgui.h>intmain(intargc,char**argv)
{
CvCapture*capture=NULL;
capture=cvCreateFileCapture("红动中国设计网视频素材2185.avi");if(!capture)return-1;//获取视频的第一帧并存在bgr_frame
IplImage*bgr_frame=cvQueryFrame(capture);//获得视频的总帧数CV_CAP_PROP_FPS帧率
doublefps=cvGetCaptureProperty(capture,CV_CAP_PROP_FPS);
//获得原始视频的高度和宽度
CvSizesize=cvSize((int)cvGetCaptureProperty(capture,CV_CAP_PROP_FRAME_WIDTH),
(int)cvGetCaptureProperty(capture,CV_CAP_PROP_FRAME_HEIGHT));///创建一个视频文件参数分别表示新建视频的名称视频压缩的编码格式新建视频的帧率新建视频的图像大小
CvVideoWriter*writer=cvCreateVideoWriter("1ai.avi",CV_FOURCC('M','J','P','G'),fps,size);//创建首地址并分配存储空间
IplImage*logpolar_frame=cvCreateImage(size,IPL_DEPTH_8U,3);//获取视频的下一帧
while((bgr_frame=cvQueryFrame(capture))!=NULL)
{//将视频从笛卡尔坐标系转到极坐标系参数分别表示输入图像输出图像变换中心尺度参数填充输出图像所有参数+CV_INTER_LINEAR表示双线性参值(具体什么意思)
cvLogPolar(bgr_frame,logpolar_frame,cvPoint2D32f(bgr_frame->width/2,bgr_frame->height/2),80,CV_INTER_LINEAR+CV_WARP_FILL_OUTLIERS);//将获取到的每一帧从笛卡尔坐标系转到极坐标系后的参数存到新建的视频文件cvWriteFrame(writer,logpolar_frame);//将获取的视频通过mainwin窗口进行展示
cvShowImage("mainwin",logpolar_frame);charc=cvWaitKey(33);//ESC默认退出
if(c==27)break;
}//释放程序中申请的空间
cvReleaseVideoWriter(&writer);
cvReleaseImage(&logpolar_frame);
cvReleaseCapture(&capture);return(0);
}
⑨ 使用OpenCV获取摄像头图像,编码压缩并发送的问题
opencv用CvVideoWriter 来写视频文件,先用 cvCreateVideoWriter创建CvVideoWriter对象的,第二个参数写“-1”,就可以选择压缩编码方式
⑩ 图像缩放 ffmpeg opencv resize 哪个速度快
OpenCV的话:YUV->IplImage->缩放->转换回YUV可参考:YUV转IPLImage(RGB)或者使用ffmpeg的swscale可以直接实现可参考:FFMPEG 实现 YUV,RGB各种图像原始数据之间的转换(swscale)