CvCaptureFromAVI问题-OpenCV Android

 2023-01-20    354  

问题描述

我需要从存储在Android设备的SD卡中的视频中捕获框架(在这种情况下为My Myulator).我通过NDK使用Android和OpenCV.我通过ddbs(eclipse)的文件资源管理器手动将文件” singleperson.avi”手动推送,然后使用以下代码读取文件:

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(捕获)结果始终是错误的.
有任何建议可以正确打开视频并抓住框架吗?
预先感谢

CvCaptureFromAVI问题-OpenCV Android

推荐答案

openCV(在包装OPENCV2中)构建的某些版本没有视频支持.如果是您的情况,则必须在pkg的makefile和重新编译中启用” -d with_ffmpeg = on”.

请看”使用AVI视频显示AVI视频OpenCV” 教程:

“您可能需要确保已成功安装FFMPEG,以允许以不同格式进行视频编码和视频解码.在尝试运行此简单示例并产生汇编错误时,没有FFMPEG功能可能会导致问题”.

还要在cvcapturefromavi中检查路径是否正确.

其他推荐答案

您要观察到的行为可能是由于cvCaptureFromAVI()失败所致.您需要开始安全地编码并检查您拨打的电话的返回:

CvCapture* capture = cvCaptureFromAVI("/mnt/sdcard/SinglePerson.avi");
if (!capture)
{
    printf("!!! Failed to open video\n\7");
    exit(0);
}

此功能通常出于2个原因失败:

  • 当它无法访问文件时(由于文件系统权限错误);
  • 系统上缺少编解码器(或OpenCV不支持视频格式).

如果您是OpenCV的新手,建议您先在桌面(PC)上测试OpenCV代码.

以上所述是小编给大家介绍的CvCaptureFromAVI问题-OpenCV Android,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对77isp云服务器技术网的支持!

原文链接:https://77isp.com/post/25938.html

=========================================

https://77isp.com/ 为 “云服务器技术网” 唯一官方服务平台,请勿相信其他任何渠道。