通过 opencv 和 python 实时跟踪对象
object tracking in real time via opencv and python
我正在寻找实时进行对象跟踪的好算法。
到目前为止我发现的最好的一个是 camshift 但问题是我需要对象检测将来自外部图像。(我给算法一个图像,他在视频中找到它......)和 camshift 需要select ROI用鼠标点。我试图改变它,但没有成功。
我愿意学习新的算法或改变 camshift。
谢谢。
我不太了解 camshift,但我猜你正在使用 opencv 实现。下面的代码是 opencv 示例的一个片段:
hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
dst = cv2.calcBackProject([hsv],[0],roi_hist,[0,180],1)
# apply meanshift to get the new location
ret, track_window = cv2.CamShift(dst, track_window, term_crit)
对于第一张图片,选择与帧大小一样大的 dst
应该可以解决您的问题。否则,您可以使用滑动 window 方法在第一帧中定位目标。
另一方面,实时一词实际上取决于您在这些方面的要求和部署环境:
- 输入视频的帧率
- 帧的分辨率
- 框架的配色方案(rgb、yuv、灰色、hsv、...)
- maximum/minimum 目标尺寸
- 最大目标速度(pixels/frame)
- 它应该对遮挡具有鲁棒性吗?
- 您的目标最具体的属性是什么:汽车、human/animals、固体物体、改变形状、转动……
- 您使用的是 CPU、DSP 还是 GPU?
- ...
由于上述所有考虑因素都会对您的选择产生真正的影响,因此我无法向您推荐具体的一个。 This one 例如可能有用。
我想我会深入研究 IEEE explore and make a search such as real time object tracking
. I did one for you :) Here 是你最好的起点。
希望这对您有所帮助。
悟空.
我正在寻找实时进行对象跟踪的好算法。 到目前为止我发现的最好的一个是 camshift 但问题是我需要对象检测将来自外部图像。(我给算法一个图像,他在视频中找到它......)和 camshift 需要select ROI用鼠标点。我试图改变它,但没有成功。 我愿意学习新的算法或改变 camshift。
谢谢。
我不太了解 camshift,但我猜你正在使用 opencv 实现。下面的代码是 opencv 示例的一个片段:
hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
dst = cv2.calcBackProject([hsv],[0],roi_hist,[0,180],1)
# apply meanshift to get the new location
ret, track_window = cv2.CamShift(dst, track_window, term_crit)
对于第一张图片,选择与帧大小一样大的 dst
应该可以解决您的问题。否则,您可以使用滑动 window 方法在第一帧中定位目标。
另一方面,实时一词实际上取决于您在这些方面的要求和部署环境:
- 输入视频的帧率
- 帧的分辨率
- 框架的配色方案(rgb、yuv、灰色、hsv、...)
- maximum/minimum 目标尺寸
- 最大目标速度(pixels/frame)
- 它应该对遮挡具有鲁棒性吗?
- 您的目标最具体的属性是什么:汽车、human/animals、固体物体、改变形状、转动……
- 您使用的是 CPU、DSP 还是 GPU?
- ...
由于上述所有考虑因素都会对您的选择产生真正的影响,因此我无法向您推荐具体的一个。 This one 例如可能有用。
我想我会深入研究 IEEE explore and make a search such as real time object tracking
. I did one for you :) Here 是你最好的起点。
希望这对您有所帮助。 悟空.