与binding.gyp链接的c ++中的OpenCV无法通过VideoCapture读取Videofile?

时间:2018-08-11 11:41:17

标签: c++ opencv electron

在电子中,我想添加一个.cpp目标,该目标使用OpenCv及其VideoCapture。 我的binding.gyp看起来像:

    {
  "targets": [
    {
       "target_name": "wrapper",
       "sources": ["src/wrapper.cpp"],
        "libraries": [
           "/home/hagen/Desktop/opencv-3.3.1/build/lib/libopencv_*.so"
           ],
        'cflags_cc!': ['-fno-rtti', '-fno-exceptions'],
        'cflags_cc+': ['-frtti', '-fexceptions']
        }
  ]
}

我这样安装了opencv:https://linuxhint.com/how-to-install-opencv-on-ubuntu/

目标wrapper.cpp大致类似于:

 #include <node.h>
    #include <opencv2/opencv.hpp>
    #include <opencv2/cvconfig.h>
    using namespace cv;


    void init(const v8::FunctionCallbackInfo<v8::Value>& args){
      v8::Isolate* isolate = args.GetIsolate();
      v8::String::Utf8Value param1(args[0]->ToString());

      std::string video_path= "/home/hagen/Desktop/VisoProj-TBP/videos/street.mp4";

        #if defined(HAVE_FFMPEG)
          std::cout<<"ffmpeg yes\n";
        #else
          std::cout<<"no\n";
        #endif

        cv::VideoCapture vid=cv::VideoCapture(video_path, cv::CAP_FFMPEG);
        if(!vid.isOpened())
        {
            std::cout << "!!! Failed to open file: " <<video_path << std::endl;
        }
}

    void Initialize(v8::Local<v8::Object> exports) {
      NODE_SET_METHOD(exports, "init", init);
    }

    NODE_MODULE(wrapper, Initialize)

它告诉我,“ HAVE_FFMPEG”是正确的,但不会打开.mp4文件。其他OpenCV函数,例如imread()和imwrite确实可以正常工作。在独立的.cpp应用程序中,我可以将OpenCV与ffmpeg一起使用,并且可以读取具有相同绝对路径的特定.mp4文件。

任何想法,如何使VideoCapture与.mp4文件配合使用?也许我的绑定是错误的? 预先感谢!

0 个答案:

没有答案