android jni层 opencv读写视频,基于VideoCapture和VideoWriter

本文介绍了在Android JNI层使用OpenCV进行视频读写遇到的问题及解决方案。在JNI层,直接使用C++的VideoCapture和VideoWriter会报错。通过查阅OpenCV文档,了解到不同平台需要使用特定的设备ID,正确配置后,读取和写入视频功能得以正常运行。作者强调,仔细阅读官方文档和多尝试是解决问题的关键。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

开始用正常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<

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值