Opencv不会写视频

时间:2013-09-20 06:57:38

标签: c++ opencv video-capture

我正在尝试使用opencv编写一个非常基本的视频捕获程序,但尽管我付出了很多努力,但没有任何内容可写。我很确定我正在学习关于这个主题的所有教程。

以下是我正在使用的代码:

#include <opencv2\core\core.hpp>
#include <opencv2\imgproc\imgproc.hpp>
#include <opencv2\highgui\highgui.hpp>
#include <videoInput.h>
static const cv::Size _SIZE(640, 480);
static const int FPS = 20;
int webcam = 0;
std::auto_ptr<videoInput> VI(NULL);
std::auto_ptr<cv::VideoWriter> outputVideo(NULL);
cv::Mat frame(_SIZE.height, _SIZE.width, CV_8UC3);

// get device list create videoInput 
videoInput::listDevices();
VI.reset(new videoInput())

// choose first device
VI->setupDevice(webcam, _SIZE.width, _SIZE.height);

// always check
if(!VI->isDeviceSetup(webcam))
return -1;  //-->

// set device frame rate
VI->setIdealFramerate(webcam, FPS);

// create named window and image
cv::namedWindow("CAM");
do
if (VI->isFrameNew(webcam))
{
VI->getPixels(webcam, (unsigned char*)frame.data, false, true); // получение пикселей в BGR

if (outputVideo.get())
{
    (*outputVideo).write( frame);
}
char c = cv::waitKey(5);
if (!IsWindowVisible((HWND)cvGetWindowHandle("CAM")) || c==27)
{
    exit(0);
}
cv::imshow("CAM", frame);
} while(1);

我尝试了各种扩展和各种Fourcc值。通常,在除avi之外的任何扩展名上,都会创建writer但不执行任何操作。相反,avi文件编写器根本无法创建。

我已经读过可能缺少编解码器,但是这意味着什么 - 我究竟需要把它放在哪里以便opencv找到它们?

总而言之,我很困惑。这是教程代码,它应该可以工作。

0 个答案:

没有答案