2017-01-04 23 views
1

私はGigaE Cameraで作業しています。グレースケール画像で、ビデオを記録したいと思います。だから私は、ウェブカメラで最初に試み、以下の私のコードでいますvideowriter関数はopencv-3.0.0でファイルを保存しません

#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; 
} 

が作成した映像が無いと私はあまりにもすべてのエラーを得ることはありません。しかし、OpenCV-2.4.10ではうまく動作します。

+0

'CV_FOURCC( 'M'、 'J'、 'P'、 'J')' - これはむしろ奇妙なFourCCコードのようです。それはMJPGですか? –

+1

はい、ファイルは作成されず、エラーはファイル名の形式によるものです。私は '/'の代わりに '\'を使用しています。さらに、コーデックMPJGはビデオを提供しますが、ノイズの多いぼかしビデオを提供します。コーデックMPEGはより良いビデオ画像を提供します。 – Reddy2810

+0

良い点、エスケープされていないバックスラッシュでその文字列を完全に逃しました:) –

答えて

0

ほとんどの場合、ビデオはコーデックのために書き込まれません。 OpenCVはエンコーディング(そして他の多くの)問題の場合には静かなままです。使用可能なコーデックのリストから選択するには、fccを-1に設定してみてください。

+0

-1で試しました。今私は "エラーが開かれていない"というエラーを取得します。どのようにコーデックがインストールされているかどうかをチェックしますか? – Reddy2810

0

解決済み!エラーは、私が '/'の代わりに '\'を使用したファイル名のパスを与えることにあります。コーデックは、グレースケール画像用のMPEGまたはDIV3です。

関連する問題