使用opencv在android中抓取连续帧

Posted

技术标签:

【中文标题】使用opencv在android中抓取连续帧【英文标题】:Grabbing consecutive frames in android using opencv 【发布时间】:2011-12-24 10:56:21 【问题描述】:

我正在尝试使用 opencv VideoCapture 类从 android 中获取连续帧。实际上我想在需要 2 帧的 android 上实现光流。我首先在 C 中实现了光流,我使用 cvQueryFrame 抓取了帧,并且一切正常。但是在我打电话时在android中

 if(capture.grab())
  
     if(capture.retrieve(mRgba))

        Log.i(TAG, "first frame retrived");

  
  if(capture.grab())
  
    if(capture.retrieve(mRgba2))

    Log.i(TAG, "2nd frame retrived");
  

然后使用 Imgproc.subtract(mRgba,mRgba2,output) 减去矩阵,然后显示输出它给我黑色图像,表明 mRgba 和 mRgba2 是具有相同数据的图像帧。任何人都可以帮助如何抓取两个不同的图像。根据 opencv 文档 mRgba 和 mRgba2 应该是不同的。

【问题讨论】:

抱歉是 core.subtract() 不是 Imgproc.subtract() 【参考方案1】:

这个问题与

完全相同

read successive frames OpenCV using cvQueryframe

您必须将图像复制到另一个内存块,因为捕获总是返回相同的指针。

【讨论】:

以上是关于使用opencv在android中抓取连续帧的主要内容,如果未能解决你的问题,请参考以下文章

opencv中如何将从视频中抓取的帧释放掉

在android中使用opencv捕获视频帧

使用 OpenCV 比较连续帧以确定运动方向

OpenCV & Virsual C++:从相机中保存帧数据,然后保存到 Jpg

在 Android 上的 OpenCV 中逐帧处理视频

OpenCV 视频只显示单帧而不是连续帧