Библиотека OpenCV не может прочитать видеофайл .mp4 для создания объекта VideoCapture - PullRequest
1 голос
/ 17 февраля 2020

Я пытаюсь захватить кадры из видео, используя OpenCV и следуя этой статье. Но по некоторым причинам OpenCV не может создать объект VideoCapture, который будет захватывать кадры. Файл в формате .mp4 совпадает с форматом файла, использованного в статье.

Код выглядит следующим образом:

#include "opencv4/opencv2/highgui/highgui.hpp"
// highgui - an interface to video and image capturing.

#include <iostream> 
// The header files for performing input and output.

using namespace cv;
// Namespace where all the C++ OpenCV functionality resides.

using namespace std;
// For input output operations.


int main()
{
    VideoCapture cap("Vid1.mp4");
    // cap is the object of class video capture that tries to capture Bumpy.mp4
    if ( !cap.isOpened() )  // isOpened() returns true if capturing has been initialized.
    {
        cout << "Cannot open the video file. \n";
        return -1;
    }
    else {
        printf("File has been opened \n");

    }
}

Когда я собираю исполняемый файл и запускаю его, я получаю вывод на консоль: Невозможно открыть видеофайл.

Теперь, как уже упоминалось здесь Я добавил окружение var. OPENCV_VIDEOCAPTURE_DEBUG=1 для просмотра журналов из opencv и поиска следующих журналов на консоли:

[ WARN:0] global /home/user/opencv/modules/videoio/src/cap.cpp (108) open VIDEOIO(FFMPEG): trying capture filename='Vid1.mp4' ...
[ WARN:0] global /home/user/opencv/modules/videoio/src/cap.cpp (170) open VIDEOIO(FFMPEG): backend is not available (plugin is missing, or can't be loaded due dependencies or it is not compatible)
[ WARN:0] global /home/user/opencv/modules/videoio/src/cap.cpp (108) open VIDEOIO(GSTREAMER): trying capture filename='Vid1.mp4' ...
[ WARN:0] global /home/user/opencv/modules/videoio/src/cap.cpp (170) open VIDEOIO(GSTREAMER): backend is not available (plugin is missing, or can't be loaded due dependencies or it is not compatible)
[ WARN:0] global /home/user/opencv/modules/videoio/src/cap.cpp (108) open VIDEOIO(INTEL_MFX): trying capture filename='Vid1.mp4' ...
[ WARN:0] global /home/user/opencv/modules/videoio/src/cap.cpp (170) open VIDEOIO(INTEL_MFX): backend is not available (plugin is missing, or can't be loaded due dependencies or it is not compatible)
[ WARN:0] global /home/user/opencv/modules/videoio/src/cap.cpp (108) open VIDEOIO(V4L2): trying capture filename='Vid1.mp4' ...
[ WARN:0] global /home/user/opencv/modules/videoio/src/cap.cpp (131) open VIDEOIO(V4L2): can't create capture
[ WARN:0] global /home/user/opencv/modules/videoio/src/cap.cpp (108) open VIDEOIO(CV_IMAGES): trying capture filename='Vid1.mp4' ...
[ WARN:0] global /home/user/opencv/modules/videoio/src/cap.cpp (120) open VIDEOIO(CV_IMAGES): created, isOpened=0
[ WARN:0] global /home/user/opencv/modules/videoio/src/cap.cpp (108) open VIDEOIO(CV_MJPEG): trying capture filename='Vid1.mp4' ...
[ WARN:0] global /home/user/opencv/modules/videoio/src/cap.cpp (131) open VIDEOIO(CV_MJPEG): can't create capture

Может кто-нибудь объяснить, почему VideoCapture создание объекта не удается?

...