c++ - 无法使用 VideoWriter 从网络摄像头捕获中写入

标签 c++ opencv runtime-error

我正在尝试将网络摄像头的记录写入文件。为此,我使用以下代码。我一直得到 2 的退出代码。有人可以帮我找出问题所在吗? 我以前使用过类似的函数调用,将一个视频文件的帧写入一个新文件,并且有效。无法理解这种情况下的问题所在。

代码片段如下:

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

 cv::Mat frame;
 cv::VideoCapture cap(0);
 cv::BackgroundSubtractorGMG bg;
 bg.numInitializationFrames=120;
 bg.decisionThreshold = 0.95;
 bg.maxFeatures = 10; 

 double fps = cap.get(CV_CAP_PROP_FPS);
 CvSize frameSize;
 frameSize.height = cap.get(CV_CAP_PROP_FRAME_HEIGHT);
 frameSize.width = cap.get(CV_CAP_PROP_FRAME_WIDTH);
 VideoWriter VW1("resultbuff.avi",CV_FOURCC('M','P','E','G'), fps, frameSize, 1);
 VideoWriter VW2("recordingbuff.avi",CV_FOURCC('M','P','E','G'), fps, frameSize, 1);
 VideoWriter VW3("finalResult.avi",CV_FOURCC('M','P','E','G'), fps, frameSize, 1);


 if (!VW1.isOpened())
 {
     std::cout << "!!! Output video could not be opened" << std::endl;
     return 2;
 }

 if (!VW2.isOpened())
 {
     std::cout << "!!! Output video could not be opened" << std::endl;
     return 3;
 }

 if (!VW3.isOpened())
 {
     std::cout << "!!! Output video could not be opened" << std::endl;
     return 4;
 }

如前所述,程序以代码 2 退出。

最佳答案

好的,我找到了答案。这是 dll 的错误。我在 Debug模式下运行程序,链接的 openCV dll 用于 Release模式。

关于c++ - 无法使用 VideoWriter 从网络摄像头捕获中写入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24674354/

相关文章:

visual-studio - LNK1112 : module machine type 'x64' conflicts with target machine type 'x86' - opencv build

c++ - C++ 中的“助手”函数

python - pyplot 不导入,抛出错误

c++ - std::string 数组的初始值设定项太多

python - BackgroundSubtractorMOG 在离开框架后仍然保留对象

firefox - 未找到 TAG 命令指定的 iMacros 元素

java - 如何防止文件加载时发生 Java 的 OutOfMemoryError?

python - 处理大于缓冲区大小的帧

c++ - boost c++库源中nat的含义

c++ - 长度超过 255 字节的字符串可以用作 ODBC 准备语句参数值吗?