通过与Android OpenCV的框架读取视频帧框架、视频、Android、OpenCV

2023-09-06 09:30:28 作者:冷眼旁观伱们不要脸旳幸福

我有一组存储的文件夹在Android文件系统上的视频。我想读一帧一帧的每一个,这样我可以对他们进行一些OpenCV函数,然后在一个位图显示它们。我不知道如何正确地做到这一点,任何帮助将是AP preciated。

I have a set of videos stored in a folder on the android file system. I would like to read each frame by frame so that i can perform some OpenCv functions on them and then display them in a Bitmap. I'm not sure how to do this correctly, any help would be appreciated.

推荐答案

您可以看看的 Javacv 。

JavaCV首先提供包装在计算机视觉领域的常用库研究人员:OpenCV的,FFmpeg的,libdc1394,PGR FlyCapture,OpenKinect,videoInput和ARToolKitPlus

"JavaCV first provides wrappers to commonly used libraries by researchers in the field of computer vision: OpenCV, FFmpeg, libdc1394, PGR FlyCapture, OpenKinect, videoInput, and ARToolKitPlus"

要通过帧中读出每帧你必须做类似下面

To read each frame by frame you'd have to do something like below

FrameGrabber videoGrabber = new FFmpegFrameGrabber(videoFilePath);

try 
{
    videoGrabber.setFormat("video format goes here");//mp4 for example
    videoGrabber.start();    
} catch (com.googlecode.javacv.FrameGrabber.Exception e) 
{           
    Log.e("javacv", "Failed to start grabber" + e);     
    return -1;  
}

Frame vFrame = null;

do
{
    try
    {
        vFrame = videoGrabber.grabFrame();
        if(vFrame != null)
            //do your magic here
    } catch (com.googlecode.javacv.FrameGrabber.Exception e) 
    {
        Log.e("javacv", "video grabFrame failed: "+ e);
    }
}while(vFrame != null);

try 
{
    videoGrabber.stop();
}catch (com.googlecode.javacv.FrameGrabber.Exception e) 
{
    Log.e("javacv", "failed to stop video grabber", e);
    return -1;
}

希望有所帮助。古德勒克

Hope that helps. Goodluck