我的Android设备上保存了一个视频文件。
使用getPath()
函数我得到了“sdcard / video_app / sample_video.avi”。
我现在正尝试在我的OpenCV C ++代码中使用此视频文件(我正在使用NDK和JNI):
VideoCapture capture("sdcard/video_app/sample_video.avi");
if(capture.isOpened()){
//return true
}else{
//return false
}
我补充说:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
它总是返回false。我究竟做错了什么 ?我读到Android上的OpenCV只支持avi容器中的MJPEG编解码器,所以我使用这种视频文件,但它仍然无法正常工作。
编辑:
我改变了路径:
VideoCapture capture("/storage/emulated/0/turning_pages.avi");
此路径是来自Environment.getExternalDirectory.getPath()
的电话的回复
路径是正确的,我用这个验证了它:
File file = new File("/storage/emulated/0/turning_pages.avi");
if(file.exists()){
//returns true
}
我已经做了一些测试,imread和imwrite正在使用类似的路径,我可以得出结论,VideoCapture的问题不是来自路径。
Mat m = imread("/storage/emulated/0/sbuinex21fyy.jpg");
if(!m.empty()){
//returns true
}
imwrite("/storage/emulated/0/sbuinex21fyy.jpg", m);
然后,我可以在设备存储中看到图片的副本。