CvCaptureFromAVI问题 - OpenCV的机器人 [英] CvCaptureFromAVI problems - OpenCV Android
问题描述
我需要捕获帧由从存储在我的sd Android设备的卡的视频帧(在这种情况下我的仿真器)。我通过NDK使用Android和OpenCV的。我手动推SD卡内的文件SinglePerson.avi通过DDBS(日蚀)的文件浏览器,我用下面的code来读取文件:
I need to capture frame by frame from a video stored in my sd card of the Android device (in this case my emulator). I am using Android and OpenCV through NDK. I pushed manually the file "SinglePerson.avi" inside the sdcard through file explorer of DDBS (eclipse) and I used the code below to read the file:
JNIEXPORT void JNICALL Java_org_opencv_samples_tutorial4_Sample4Mixed_VideoProcessing(JNIEnv*, jobject)
{
LOGI("INSIDE VideoProcessing ");
CvCapture* capture = cvCaptureFromAVI("/mnt/sdcard/SinglePerson.avi");
IplImage* img = 0;
if(!cvGrabFrame(capture)){ // capture a frame
LOGI("Inside the if");
printf("Could not grab a frame\n\7");
exit(0);
}
img=cvRetrieveFrame(capture);// retrieve the captured frame
cvReleaseCapture(&capture);
}
问题是,cvGrabFrame(捕获)的结果始终为false。 任何建议正确地打开视频和抢框架? 在此先感谢
The problem is that cvGrabFrame(capture) results always false. Any suggestion to correctly open the video and grab the frames? Thanks in advance
推荐答案
您所观察的行为可能是由于 cvCaptureFromAVI()
失败。您需要开始编码安全并检查调用你做出回报:
The behavior you are observing is probably due to cvCaptureFromAVI()
failing. You need to start coding safely and check the return of the calls you make:
CvCapture* capture = cvCaptureFromAVI("/mnt/sdcard/SinglePerson.avi");
if (!capture)
{
printf("!!! Failed to open video\n\7");
exit(0);
}
这个功能通常失败,原因有二:
This function usually fails for 2 reasons:
- 当它是无法访问文件(由于错误的文件系统权限); (不被OpenCV的支持或视频格式)
- 在缺少$ C $系统上的CCS。
- When it's unable to access the file (due to wrong filesystem permissions);
- Missing codecs on the system (or the video format is not supported by OpenCV).
如果你是新的OpenCV的,我建议你桌面(PC)第一个测试你的OpenCV code。
If you are new to OpenCV, I suggest you test your OpenCV code on a desktop (PC) first.
这篇关于CvCaptureFromAVI问题 - OpenCV的机器人的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!