kazumori
@kazumori

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

OpenCV製システムで録画ができないことについての質問

解決したいこと

この質問の一環で長時間録画及び画像の表示を同時に行えるOpenCV製システムを開発しようとしているが、録画ができない。

環境

  • Win10 x64 22h2
  • VC++ MFC VS2015
  • (試験環境)UVC規格準拠のノートPC内臓Webカメラ
  • (本番環境)UVC規格準拠の2592x1944 12fps 500万画素 スクエアのUSB3.0カメラ
  • OpenCV 3.4.7

コード

動画の録画および録画中のプレビュ表示の為に録画開始コードを下記のように書きました。

TRACE(_T("\nファイルネーム:%s\n"), filename);
CStringA csaBuf(filename);
pVideo = cvCreateVideoWriter(
            "hoge.avi",//csaBuf.GetBuffer(),
            CV_FOURCC('M','J','P','G'),
            iCameraFramerate[m_iCH],
            CvSize{iCameraWidth[m_iCH], iCameraHeight[m_iCH]});
//csaBuf.ReleaseBuffer();
if (pVideo == nullptr) {
    const int error_num = cvGetErrStatus();
    const CString errStr(cvErrorStr(error_num));
    CString csBuf;
    csBuf.Format(
        _T("録画開始に失敗しました。\nファイルパス:[%s]\nerrno=%d:%s\n"),
        filename,
        error_num, errStr);
    MessageBoxW(nullptr, csBuf, _T("録画失敗"), MB_ICONSTOP);
    return false;
}

発生している問題・エラー

  • 問題
    cvCreateVideoWriterの戻り値が常にNULLになります。
    カメラに対応した規格の形式で録画しようとしていますがうまくいかないです。
    error_numは(Leafモードであるにもかかわらず)0です。そのためエラーの追跡が効かないです。
    何故NULLになるのか何か心当たりありますでしょうか?

自分で試したこと

画像の表示部分はうまく表示されているのでDLL読めてないの類ではないと思います。
CV_FOURCCのところを-1にする(CV_FOURCC_PROMPTを指定)はGUIが出ないで同様にNULLになりました。
無圧縮形式(CV_FOURCC('D','I','B',' '))にしてもダメでした。

参考

https://okwave.jp/qa/q5091955.html
https://opencv.yahoogroups.narkive.com/2al3hi15/cvcreatevideowriter-returns-null-pointer

0

Your answer might help someone💌