C++ h.264压缩视频中的目标跟踪

C++ h.264压缩视频中的目标跟踪,c++,video,h.264,beagleboard,C++,Video,H.264,Beagleboard,我正在从事一个项目,该项目要求我通过连接到Beagleboard xm的网络摄像头在实时视频中检测和跟踪人类。 我已经使用像素域中的Opencv完成了这项任务。板上的结果非常准确,但速度非常慢。许多人建议我离开像素域,在h.264/MPEG-4压缩视频中执行相同的任务,因为这将极大地减少计算开销。 我读过很多研究论文,但没有发现任何可以用来分析和处理h.264压缩视频的软件平台或库。 如果有人能为我推荐一些h.264压缩视频分析库并进一步指导我,我将不胜感激 谢谢和问候 我不确定这到底有多实用(

我正在从事一个项目,该项目要求我通过连接到Beagleboard xm的网络摄像头在实时视频中检测和跟踪人类。 我已经使用像素域中的Opencv完成了这项任务。板上的结果非常准确,但速度非常慢。许多人建议我离开像素域,在h.264/MPEG-4压缩视频中执行相同的任务,因为这将极大地减少计算开销。 我读过很多研究论文,但没有发现任何可以用来分析和处理h.264压缩视频的软件平台或库。 如果有人能为我推荐一些h.264压缩视频分析库并进一步指导我,我将不胜感激


谢谢和问候

我不确定这到底有多实用(我从未尝试过),但我猜他们所指的是寻找一块具有(几乎)相同运动矢量的宏块

例如,假设您有一个不平移的摄像头,图片显示一辆汽车在屏幕上行驶。查看运动矢量,您应该有一个(大致)汽车形状的宏块束,所有宏块都具有相似的运动矢量(表示汽车的运动)。然后,您可以单独查看该块并尝试识别它,而不是查看感兴趣对象的整个图片。类似地,如果相机与汽车一起平移,你会得到一个具有小运动矢量的汽车形状的块,并且大多数背景在汽车运动的相反方向上会有相似的运动矢量


然而,请注意,这充其量可能是不精确的。举个例子,让我们假设我们虚构的汽车行驶在一座砖房前,前灯照亮了一些砖块。在这种情况下,一张图片中的砖块可能(很容易)不会指向前一张图片中的同一块砖块,而是指向前一张图片中恰好被照亮的砖块。砖块非常相似,最接近的匹配将更多地取决于照明,而不是砖块本身。

我不确定这到底有多实际(我从未尝试过这么做),但我猜他们所指的是寻找一块具有(几乎)相同运动向量的宏块

例如,假设您有一个不平移的摄像头,图片显示一辆汽车在屏幕上行驶。查看运动矢量,您应该有一个(大致)汽车形状的宏块束,所有宏块都具有相似的运动矢量(表示汽车的运动)。然后,您可以单独查看该块并尝试识别它,而不是查看感兴趣对象的整个图片。类似地,如果相机与汽车一起平移,你会得到一个具有小运动矢量的汽车形状的块,并且大多数背景在汽车运动的相反方向上会有相似的运动矢量


然而,请注意,这充其量可能是不精确的。举个例子,让我们假设我们虚构的汽车行驶在一座砖房前,前灯照亮了一些砖块。在这种情况下,一张图片中的砖块可能(很容易)不会指向前一张图片中的同一块砖块,而是指向前一张图片中恰好被照亮的砖块。砖块非常相似,最接近的匹配将更多地取决于照明,而不是砖块本身。

最终,您可能能够解析并确定h.264有一个对象,但这不会像您所寻找的那样是“对象跟踪”。openCV是一款优秀的软件,它最擅长做什么。您是否考虑过将视频缩小到更小的分辨率以便于openCV进行分析

我认为你高估了这台45美元的计算机的计算能力。目标识别和跟踪在计算上是非常困难的。我会先看看你的棋盘每秒能跟踪多少帧,然后再优化。开始看看你的瓶颈在哪里,你最好先处理原始视频,而不是先解码h.264视频。同样,原始视频需要大量RAM,而通过它进行处理需要大量CPU


最小化解码视频的开销,通过在分析之前缩小视频的比例来最小化RAM开销,但最终,你需要从1ghz、32位ARM处理器获得大量的信息。

你可能最终能够解析并确定h.264有一个对象,但这不是你想要的“对象跟踪”。openCV是一款优秀的软件,它最擅长做什么。您是否考虑过将视频缩小到更小的分辨率以便于openCV进行分析

我认为你高估了这台45美元的计算机的计算能力。目标识别和跟踪在计算上是非常困难的。我会先看看你的棋盘每秒能跟踪多少帧,然后再优化。开始看看你的瓶颈在哪里,你最好先处理原始视频,而不是先解码h.264视频。同样,原始视频需要大量RAM,而通过它进行处理需要大量CPU


最小化解码视频的开销,通过在分析之前缩小视频的比例来最小化RAM开销,但最终,您需要从1ghz、32位ARM处理器获得大量的资源。

FFMPEG是一个非常古老的库,现在已经不受支持了。它在h.264压缩视频的处理和对象跟踪方面的能力非常有限。大多数命令通常都是过时的。
最好是彻底研究h.264,然后尝试用Java或c#等语言实现自己的API

FFMPEG是一个非常古老的库,现在已经有好几天不受支持了。在h.264压缩中,它在处理和对象跟踪方面的能力非常有限