我有一组视频存储在android文件系统的文件夹中。 我想逐帧读取每个帧,以便我可以在它们上执行一些OpenCv函数,然后在Bitmap中显示它们。 我不确定如何正确地做到这一点,任何帮助都将不胜感激。
答案 0 :(得分:6)
您可以查看Javacv。
“JavaCV首先为计算机视觉领域的研究人员提供常用库的包装:OpenCV,FFmpeg,libdc1394,PGR FlyCapture,OpenKinect,videoInput和ARToolKitPlus”
要逐帧阅读每个帧,您必须执行以下操作
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;
}
希望有所帮助。古德勒克
答案 1 :(得分:0)
我不了解Android,但通常您必须使用VideoCapture::open
打开视频,然后使用VideoCapture::grab
获取下一帧。有关详细信息,请参阅OpenCV的Documentation。
答案 2 :(得分:0)
我知道它已经晚了但是如果他需要的话,任何人都可以使用它
所以你可以使用@Pawan Kumar代码,你需要在清单文件中添加读取渗透System.out.println(Arrays.equals(i, i1));//return true same content
你会得到它。