① 在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)