在电子中,我想添加一个.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文件配合使用?也许我的绑定是错误的? 预先感谢!