C++ videowriter函数不使用opencv-3.0.0保存文件

C++ videowriter函数不使用opencv-3.0.0保存文件,c++,opencv,visual-studio-2013,C++,Opencv,Visual Studio 2013,我使用的是GigaE摄像头,它是灰度图像,我想录制视频。因此,我最初尝试使用网络摄像头,下面是我的代码: #include "opencv2\highgui\highgui.hpp" #include "iostream" #include "opencv2/opencv.hpp" #include "opencv2/videoio.hpp" #include "opencv2/imgcodecs/imgcodecs.hpp" #include "opencv2/videoio/videoi

我使用的是
GigaE摄像头
,它是灰度图像,我想录制视频。因此,我最初尝试使用网络摄像头,下面是我的代码:

#include "opencv2\highgui\highgui.hpp" 
#include "iostream" 
#include "opencv2/opencv.hpp"
#include "opencv2/videoio.hpp"
#include "opencv2/imgcodecs/imgcodecs.hpp"
#include "opencv2/videoio/videoio.hpp"
#include<string>

using namespace cv;
using namespace std;

int main(int argc, char* argv[])
{

VideoCapture cap(0);
VideoWriter writer;
if (!cap.isOpened())
{
    cout << "not opened" << endl;
    return -1;
}

char* windowName = "Webcam Feed";
namedWindow(windowName, CV_WINDOW_AUTOSIZE);
string filename = "D:\videos\myVideo12.avi";
int fcc = CV_FOURCC('M', 'J', 'P', 'J');
int fps = 30;
Size frameSize(cap.get(CV_CAP_PROP_FRAME_WIDTH), cap.get(CV_CAP_PROP_FRAME_HEIGHT));
bool isColor = false;
writer = VideoWriter(filename, fcc, fps, frameSize, isColor);

if (!writer.isOpened())
{
    cout << "Error not opened" << endl;
    getchar();
    return -1;
}


while (1)
{

    Mat frame;

    bool bSuccess = cap.read(frame);

    if (!bSuccess)
    {
        cout << "ERROR READING FRAME FROM CAMERA FEED" << endl;
        break;
    }
    cvtColor(frame, frame, CV_BGR2GRAY);
    writer.write(frame);
    imshow(windowName, frame);
  return 0;
}
#包括“opencv2\highgui\highgui.hpp”
#包括“iostream”
#包括“opencv2/opencv.hpp”
#包括“opencv2/videoio.hpp”
#包括“opencv2/imgcodecs/imgcodecs.hpp”
#包括“opencv2/videoio/videoio.hpp”
#包括
使用名称空间cv;
使用名称空间std;
int main(int argc,char*argv[])
{
视频捕获上限(0);
录像作者;
如果(!cap.isOpened())
{

cout最有可能的情况是,由于编解码器的原因,视频没有被写入。在编码的情况下,OpenCV倾向于保持沉默(以及许多其他)问题。请尝试将fcc设置为-1以从可用编解码器列表中进行选择。

已解决!错误在于提供了我使用“\”而不是“/”的文件名路径。对于灰度图像,编解码器是MPEG或DIV3。

我尝试了-1。现在我遇到了“错误未打开”的错误。如何检查编解码器是否已安装?
CV\cc('M','J','P','J')
--这看起来像是一个很奇怪的FourCC代码。这不是MJPG吗?是的,但文件没有创建,错误是由于文件名的格式。我用了“\”而不是“/”。此外,编解码器MPJG也提供视频,但视频更嘈杂和模糊。编解码器MPEG提供了更好的视频图像。很好,完全忽略了这一点带有未缩放反斜杠的字符串:)