无法在opencv3中播放视频?

时间:2017-08-23 04:08:51

标签: c++ opencv video

这是我的代码。无法在opencv3.3中播放视频文件。我是OpenCV的初学者。请帮帮我。

int main(void) {
cv::VideoCapture capVideo;

cv::Mat imgFrame;

capVideo.open("C:\\Users\\sbv\\Documents\\MyVideo.avi");

if (!capVideo.isOpened())  {                                                 
    std::cout << "\nerror reading video file" << std::endl << std::endl;      
    _getch();                   
    return(0);
         }

if (capVideo.get(CV_CAP_PROP_FRAME_COUNT) < 1) {
    std::cout << "\nerror: video file must have at least one frame";
    _getch();
    return(0);
}

capVideo.read(imgFrame);

char chCheckForEscKey = 0;

while (capVideo.isOpened() && chCheckForEscKey != 27) {

    cv::imshow("imgFrame", imgFrame);

    if ((capVideo.get(CV_CAP_PROP_POS_FRAMES) + 1) < capVideo.get(CV_CAP_PROP_FRAME_COUNT)) 
            {
            capVideo.read(imgFrame);                          
    }
    else 
            {
             std::cout << "end of video\n";
             break;                                              
    }

    chCheckForEscKey = cv::waitKey(1);      
        }

if (chCheckForEscKey != 27) {               
    cv::waitKey(0);                             
    }
    return(0);
}

错误即将发生:

  

读取视频文件时出错。

请解决此问题。

2 个答案:

答案 0 :(得分:1)

对于我来说,解决方案是将opencv_ffmpeg320_64.dll文件复制到我项目的文件夹中

答案 1 :(得分:0)

问题很明显 capVideo.open(&#34; C:\用户\ SBV \文件\ MyVideo.avi&#34);

您尝试在路径中打开MyVideo.avi:

C:\\Users\\sbv\\Documents\\MyVideo.avi

但该文件在该路径中不存在。

快速修复:在cygwin中工作

capVideo.open("C:/Users/sbv/Documents/MyVideo.avi");

或者将MyVideo.avi放在与程序相同的目录中。