这是我使用OpenCV从图像创建视频的示例程序.
但我的输出视频无法正常工作并发生错误并声明“无法解复用流”
请帮忙.
但我的输出视频无法正常工作并发生错误并声明“无法解复用流”
请帮忙.
#include<cv.h> #include<highgui.h> #include<cvaux.h> #include<cxcore.h> int main() { //CvVideoWriter *writer = 0; int isColor = 1; int fps = 25; // or 30 int frameW = 320; // 744 for firewire cameras int frameH = 240; // 480 for firewire cameras CvSize size; size.width = frameW; size.height = frameH; CvVideoWriter *writer = cvCreateVideoWriter( "data3.avi",CV_FOURCC('M','J','P','G'),fps,size); IplImage* img = 0; img=cvLoadImage("IMG_0157.JPG"); for(int counter=0;counter < 3000;counter++) { cvWriteFrame(writer,img); // add the frame to the file } cvReleaseVideoWriter(&writer); return 0; }
您可以尝试不同的FOURCC代码.其中一些不受OpenCV的正确支持,一些是多媒体应用程序.拥有一个适用于OpenCV和您最喜欢的视频播放器的是一个试验和错误的问题.
原文链接:https://www.f2er.com/ubuntu/349168.html您可以尝试的方法:使用VLC(如果您不使用它).它是那里最强大的球员之一.@H_404_10@
如果您只想在OpenCV中显示/处理一系列图像作为视频,您可以使用VideoCapture的未记录功能:加载一系列图像.@H_404_10@
示例在C中,但您可以轻松将其转换为C.@H_404_10@
// pics are a sequence of Pictures001.jpg,PicturesS002.jpg,etc cv::VideoCapture cap("path/to/my/Pictures%03d.jpg"); cv::Mat frame; for(;;) { cap >> frame; if(frame.empty()) break; // do some processing }