OpenCV为啥只保存视频的前景帧后得到的是无效的文件?附代码
OpenCV为什么只保存视频的前景帧后得到的是无效的文件?附代码
b.avi是一个6K的无效文件
------解决方案--------------------
![OpenCV为啥只保存视频的前景帧后得到的是无效的文件?附代码 OpenCV为啥只保存视频的前景帧后得到的是无效的文件?附代码](/default/index/img?u=aHR0cDovL3d3dy5teWV4Y2VwdGlvbnMubmV0L2ltZy8yMDEzLzA2LzI2LzEzMzk0MjU0Ny5naWY=)
学习下!
------解决方案--------------------
恭喜,接分
------解决方案--------------------
呵呵,怎么解决的?存的是个图片吧:)
#include <opencv2/core/core.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/video/video.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main()
{
Mat frame;
Mat foreground; // 前景图片
IplImage img;
VideoCapture capture("a.avi");
VideoWriter writer;
CvCapture* capture1 = cvCreateFileCapture( "a.avi" );
if (!capture1 || !capture.isOpened())
{
return 0;
}
double fps = cvGetCaptureProperty (capture1,CV_CAP_PROP_FPS); //c++接口不知道怎么取。。
CvSize size = cvSize((int)cvGetCaptureProperty( capture1, CV_CAP_PROP_FRAME_WIDTH),(int)cvGetCaptureProperty( capture1, CV_CAP_PROP_FRAME_HEIGHT));
Size s(size.width, size.height);
// CvVideoWriter* writer = cvCreateVideoWriter("b.avi",CV_FOURCC('D','X','5','0'), fps,size);
writer.open("b.avi", CV_FOURCC('M','J','P','G'), fps, s);
namedWindow("Extracted Foreground");
namedWindow("Source Video");
// 混合高斯物体
BackgroundSubtractorMOG mog;
bool stop(false);
while (!stop)
{
if (!capture.read(frame))
{
break;
}
mog(frame, foreground, 0.01);
threshold(foreground, foreground, 128, 255, THRESH_BINARY_INV);
//img = foreground;
// cvWriteToAVI( writer, &img );
writer.write(foreground);
// show foreground
imshow("Extracted Foreground", foreground);
imshow("Source Video", frame);
if (waitKey(10) == 27)
{
stop = true;
}
}
}
b.avi是一个6K的无效文件
------解决方案--------------------
学习下!
------解决方案--------------------
恭喜,接分
------解决方案--------------------
呵呵,怎么解决的?存的是个图片吧:)