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