OpenCV-Python实战(26)——复杂场景下的实时物体检测与跟踪
OpenCV-Python实战(26)——复杂场景下的实时物体检测与跟踪
- 0. 前言
- 1. 本节目标
- 2. 规划应用程序
- 3. 搭建应用程序
- 3.1 运行应用程序——main() 函数例程
- 3.2 显示结果
- 4. 处理流程
- 5. 特征提取
- 5.1 特征检测
- 5.2 使用SURF检测图像中的特征
- 5.3 使用 SURF 获取特征描述符
- 6. 特征匹配
- 6.1 使用 FLANN 跨图像匹配特征
- 6.2 剔除异常值
- 6.3 可视化特征匹配
- 6.4 单应性估计映射
- 6.5 图像变换
- 7. 特征跟踪
- 7.1 早期异常值检测与剔除
- 8. 运行效果
- 小结
- 系列链接
0. 前言
我们已经学习了如何在高度受控的环境中检测并跟踪一个简单物体(手的轮廓)。更具体地说,我们指导应用的用户将手放在屏幕中央区域,然后对物体(手)的大小和形状做出了假设。在本节中,我们希望检测并跟踪任意大小的物体,这些物体可能从多个不同角度或部分遮挡的情况下被观察。
为此,我们将利用特征描述符,这是一种捕获感兴趣物体重要属性的方法。我们这样做是为了即使物体嵌入在复杂的视觉场景中,也能定位到它。我们将把算法应用于网络摄像头的实时视频流,并尽力保持算法的鲁棒性,同时使其足够简单以实时运行。
1. 本节目标
本节的目的是开发一个应用程序,能够在网络摄像头的视频流中检测并跟踪感兴趣的物体——即使该物体从不同角度、距离或部分遮挡的情况下被观察。这样的物体可以是一本书的封面图像、一幅画,或者任何具有复杂表面结构的东西。一旦提供了模板图像,该应用将能够检测到该物体,估计其边界,然后在视频流中对其进行跟踪。
在正式开始之前,需要说明的是,在安装OpenCV时需设置OPENCV_ENABLE_NONFREE和OPENCV_EXTRA_MODULES_PATH变量,以便安装加速鲁棒特征 (Speeded-Up Robust Features,SURF) 和快速最近邻逼近搜索库 (Fast Library for Appro
