亲测window,linux环境下都可使用
本人主做嵌入式自学的视觉,学习分享,能力有限,望大佬们指点
参考文献:1.光流法运动目标检测 - 小宅博客 (bilibili996.com)
背景:想做的是能够追踪一个目标点,在三维空间下的坐标
想上深度学习,但是感觉有点费算力,其次没系统学习人为只能作为识别,不知道深度学习对点的追踪效果咋样,希望大拿可以说下。所以最后用了OPENCV给了个简单的展现
一.环境搭建
主要环境是python3.7
以及下几个主要的Python库
- OpenCV (cv2): 用于图像处理和计算光流。
- Matplotlib: 用于绘制3D图表可视化光流跟踪结果。
- NumPy: 用于处理数组数据
可以通过以下命令来检测环境是否已经安装
pip install opencv-python matplotlib numpy
检查是否有相应的Python库
sudo apt-get install python3-opencv python3-matplotlib python3-numpy
好了那就没有了,废话不多说上代码
二.二维坐标下光流显示
效果图如上
代码主要实现方式是这样的
- 初始化摄像头并设置回调函数,以便通过鼠标点击指定跟踪的关键点。
- 使用ShiTomasi角点检测初始化关键点,或者通过鼠标回调获取用户指定的关键点。
- 在每一帧中使用Lucas-Kanade方法计算光流,跟踪关键点的运动。
- 使用Matplotlib在3D图表中显示关键点的轨迹,其中X、Y、Z分别表示关键点的横纵坐标和帧数。
- 在用户按下 'q' 键时退出跟踪。
各个函数的解释
1.tracking 函数:
cap.read() 从摄像头中读取一帧图像,返回布尔值 ret 表示读取是否成功,以及图像帧 frame。
图像帧经过灰度转换,使用 ShiTomasi 角点检测找到角