我目前正在构建一个视频轨道(来自摄像头)和音频轨道(来自微型)之间的自动同步处理。为此,我计划构建一个小的web应用程序,它将在我的智能手机(例如: Iphone)上显示一个clapper,并在我将被拍摄时发出特定的bip。之后,我将执行一个小的OpenCV应用程序(实际上是JavaCV),它将检测我的智能手机显示点击器的图像。它将继续为我只找到特定的bip来同步两个轨道。
你可以在这里(http://vimeo.com/47002882)和这里(http://vimeo.com/46213073)看到我们已经手动构建和同步的视频。根据这个背景(距离,照明等之前的视频),对你来说,最好的东西(形状,颜色或其他)是什么,几乎所有时间都可以检测到?我应该使用哪种类型的转换?
你必须想象一下,我会用智能手机上的摄像头显示快板,摄像头放在离我5米-7米的地方。
我构建了第一个基本快板(http://jsbin.com/zuqumiso/45/),并使用OpenCV进行视频处理,如下所示:
Frame -> a RGB to GRAY conversion -> GaussianBlur -> AdaptativeThreshold -> Hought ->(标准)以检测线条。
但只有当我的智能手机距离摄像头30厘米时,它才有效。
发布于 2014-03-24 20:39:25
鉴于视频中您的手机屏幕非常小,我认为您无法自动检测手机上显示的任何标准标记(例如二维码、圆圈或棋盘)。
如果我是你,我会尝试用一种简单得多的方法。首先,我会在手机上显示一个全屏闪烁的黑白图案。如果电话保持合理的稳定,这应该能够检测闪烁区域,作为强度方差在几个连续帧上最高的区域。然后,为了音频/视频同步,我会同时发射bip,并将全屏模式转换为特定的颜色(例如,亮红色或亮绿色)。同样,通过检测先前识别的闪烁区域上的颜色饱和度中断,应该可以非常容易地检测到从黑/白到完全饱和颜色的转换。
这可能不是你一开始问这个问题时想要的,但考虑到你对电话/摄像头距离的严格限制,我认为没有其他方法。
发布于 2014-03-17 22:23:01
大多数图像算法都是通过观察过渡(也就是边缘)来工作的。由于您的相机是RGB相机,因此理想的可检测边缘应该是对所有颜色都可见的边缘。
最简单的选择是使用简单的二维码。它的边缘很容易检测,你甚至可以在多个代码之间进行区分。
形状和颜色往往比二维码更加多变。
https://stackoverflow.com/questions/22441004
复制相似问题