开始用正常c++的opencv代码,包括python代码,也都是直接用VideoCapture
,在open后面加videofile
就可以了
// read video
cv::VideoCapture capture;
capture.open("/storage/emulated/0/DCIM/test.mp4");
但是在android jni层无论读写视频,capture.open
那里都会报错
E/cv::error(): OpenCV(4.6.0) Error: Requested object was not found (could not open directory: /data/app/~~sbu7r1TB_QJQDnKVkr9ABQ==/com.tencent.yolov5ncnn-5hoZtN5FqSkRrIkcIlVUuQ==/base.apk!/lib/arm64-v8a) in glob_rec, file /build/master_pack-android/opencv/modules/core/src/glob.cpp, line 279
A/libc: Fatal signal 11 (SIGSEGV), code 2 (SEGV_ACCERR), fault addr 0x797302f480 in tid 19587 (cent.yolov5ncnn), pid 19587 (cent.yolov5ncnn)
下面是VideoWriter
写入的代码,也是报同样的错
cv::VideoWriter writer;
writer.open("/sdcard/DCIM/test_opencv_write.avi", codec, fps, size, true);
解决方案:
后来查了opencv的文档,发现open后面还有apiPreference<