未能使用VideoWriter从网络摄像头捕获的内容中进行编写

Failing to use VideoWriter for writing from a webcam capture

本文关键字:VideoWriter 摄像头 网络      更新时间:2023-10-16

我正在尝试将我的网络摄像头录制到文件中。为此,我使用以下代码。我得到的出口代码总是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的一个错误。我在调试模式下运行程序,链接的openCV dll用于发布模式。