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

在Android上的OpenCV中逐帧处理视频,第1张

概述我的目标如下: 我必须阅读存储在SD卡上的视频,将其处理为帧,然后再将其存储在SD卡上的新文件中.问题是OpenCV4 Android没有配备视频编码器/解码器,因为它不包括ffmpeg.此外,使用JavaCV处理图像对我来说是没有选择的,因为代码已经在本机OpenCV中编写,我通过JNI访问它们.我在stackoverflow和谷歌的其余部分做了很多阅读.但我没有找到解决方案. > JavaCV 我的目标如下:
我必须阅读存储在SD卡上的视频,将其处理为帧,然后再将其存储在SD卡上的新文件中.问题是OpenCV4 Android没有配备视频编码器/解码器,因为它不包括ffmpeg.此外,使用JavaCV处理图像对我来说是没有选择的,因为代码已经在本机OpenCV中编写,我通过JNI访问它们.我在stackoverflow和谷歌的其余部分做了很多阅读.但我没有找到解决方案.

> JavaCV允许我逐帧读取视频,并逐帧存储.但是,我无法将视频转换为普通的OpenCV Mat对象,而这些对象可以由通常的OpenCV4AndroID处理.
>我读到JCodec是一个用于编码/解码视频的库. JCodec会让我完成我的任务吗?如果是的话,你知道任何例子.
>编译适用于AndroID的FFMPEG也是一种选择.但是,我认为自己编写FrameGrabber和FrameRecorder有点过分.我认为除了JavaCV之外,还必须存在一些解决方案.
>从API 18开始,AndroID中有MediaCodec和Mediamuxer.也许他们可以帮助我?

所以让我们来看看我的要求.我目前正在定位AndroID API 19,因此我可以使用我需要的所有功能.对我来说最重要的要求如下:

如果我使用30 FPS处理10秒的视频,结果也应该是10秒30 FPS的视频.所以我想要一个视频的精确副本,但是OpenCV会在每个帧中添加一些绘图.例如,通过Python使用OpenCV可以通过使用VIDeoWriter类和VIDeoinput类来完成此任务.我在AndroID上需要相同的功能.

我想知道到目前为止没有人遇到这个问题(或者我没有找到它).

希望,我解释了一切.

解决方法 @Alekz:是的,我找到了解决方案.即使是额外的开销,对我的研究项目来说也足够了.

该解决方案涵盖了OpenCV 4 AndroID和JavaCV的使用.我首先使用JavaCV来逐帧读取.之后,我将此帧转换为OpenCV使用的格式,处理帧.最后,我要么直接在屏幕上显示已处理的帧,要么将其转换回JavaCV并将其存储在新文件中.您可以在下面找到不同使用的帧格式的详细解决方案.

>使用FrameGrabber从视频中获取三通道Iplimage帧>将抓取的三通道帧转换为四通道Iplimage帧>将四通道帧转换为AndroID位图图像>将AndroID Bitmap图像转换为OpenCV Mat框架>处理OpenCV Mat框架>将已处理的Mat帧转换为AndroID Bitmap图像>将AndroID位图图像转换为四通道Iplimage帧>将四通道Iplimage帧转换为三通道Iplimage>使用FrameRecorder在视频中存储三个通道Iplimage作为帧

总结

以上是内存溢出为你收集整理的在Android上的OpenCV中逐帧处理视频全部内容,希望文章能够帮你解决在Android上的OpenCV中逐帧处理视频所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1135938.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存