这是我使用 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 和您最喜欢的视频播放器的软件是一个反复试验的问题。
您可以尝试的方法:使用 VLC(如果您还没有使用它)。它是那里最强大的玩家之一。
如果您只想在 OpenCV 中将一系列图像显示/处理为视频,您可以使用 VideoCapture 的一个未记录的功能:加载图像序列。
示例是用 C++ 编写的,但您可以轻松地将其转换为 C。
// 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
}
关于opencv - 在 Ubuntu 上使用 OpenCV 2.4.1 从图像创建视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11131770/