此代碼段應保存視頻的一部分,其範圍由start
和end
定義。有一系列結構(data[i]
),用於保存原始視頻中拍攝的視頻的開始和結束幀。共有8個鏡頭。在opencv中使用cvVideoWriter時出錯?
for (int i = 0; i < finalCount-1; ++i) {
capture = cvCaptureFromAVI("Stats\\Shots\\Cricketc1.avi");
assert(capture);
int frame_number = 0;
int start = data[i].start_frame;
int end = data[i].end_frame;
char shotname[100];
strcpy_s(shotname, "shot_");
char shot_id[30];
_itoa_s(data[i].shot_no, shot_id, 10);
strcat_s(shotname, shot_id);
strcat_s(shotname, ".avi");
IplImage* image = NULL;
CvVideoWriter* writer = NULL;
writer = cvCreateVideoWriter (shotname, CV_FOURCC('i','Y','U','V'), fps, cvSize(width, height), 1);
assert(writer);
while (frame_number >= start && frame_number < end) {
image = cvQueryFrame(capture);
assert(image);
cvWriteFrame(writer, image);
}
cvReleaseImage(&image);
cvReleaseVideoWriter(&writer);
cvReleaseCapture(&capture);
cout << shotname << " saved ..." << endl;
}
運行程序後,創建了8個視頻文件,其大小爲6kb,並且不運行。我已經嘗試了各種編解碼器,如divx,mjpg,mpg2,iyuv等,但都給出了相同的結果。
Radius cinepack在我的系統中不工作。有沒有辦法通過我可以找到由opencv安裝的編解碼器? –