如何在openCV中添加"Tracker" python 2.7
How to add "Tracker" in openCV python 2.7
我正在使用 python 2.7 和 opencv 3.1
我想 运行 一个跟踪对象的代码:
import cv2
import sys
if __name__ == '__main__' :
# Set up tracker.
# Instead of MIL, you can also use
# BOOSTING, KCF, TLD, MEDIANFLOW or GOTURN
tracker = cv2.Tracker_create("MIL")
# Read video
video = cv2.VideoCapture("videos/chaplin.mp4")
# Exit if video not opened.
if not video.isOpened():
print "Could not open video"
sys.exit()
# Read first frame.
ok, frame = video.read()
if not ok:
print 'Cannot read video file'
sys.exit()
# Define an initial bounding box
bbox = (287, 23, 86, 320)
# Uncomment the line below to select a different bounding box
# bbox = cv2.selectROI(frame, False)
# Initialize tracker with first frame and bounding box
ok = tracker.init(frame, bbox)
但是当我 运行 它时,我遇到了这个错误:
AttributeError: 'module' object has no attribute 'Tracker_create'
这是源代码:http://www.learnopencv.com/object-tracking-using-opencv-cpp-python/
我正在寻找解决方案,但找不到任何有用的东西……
我该怎么做才能将此模块添加到我的 opencv 库中?
您似乎没有使用 opencv_contrib 模块编译 OpenCV。你必须重新编译它。您可以在 this 博文中找到一个很好的分步教程。
编辑:
如果您需要在 Windows 上编译它,您可以使用 @Osama
的精彩教程
希望对您有所帮助。
我认为最简单和最快的方法是通过 .whl 文件安装。 @foobar 在 post @kyjanond 链接中给出了答案,但您可以从以下链接获取 .whl 文件。
OpenCV:https://pypi.python.org/pypi/opencv-python/3.3.0.10
OpenCV 贡献:https://pypi.python.org/pypi/opencv-contrib-python/3.3.0.10
我在Python2.7上安装了OpenCV 3.3.0,所以我下载了:
- opencv_python-3.3.0.10-cp27-cp27m-win32.whl
- opencv_contrib_python-3.3.0.10-cp27-cp27m-win32.whl
要安装,我运行:
- python -m pip install opencv_python-3.3.0.10-cp27-cp27m-win32.whl
- python -m pip install opencv_contrib_python-3.3.0.10-cp27-cp27m-win32.whl
这行得通,但在 OpenCV 的更新版本中,跟踪器函数的调用方式发生了变化。
GitHub 存储库中的原始代码是:
tracker_types = ['BOOSTING', 'MIL','KCF', 'TLD', 'MEDIANFLOW', 'GOTURN']
tracker_type = tracker_types[1]
tracker = cv2.Tracker_create(tracker_type)
我改成了
tracker_types = ['BOOSTING', 'MIL','KCF', 'TLD', 'MEDIANFLOW', 'GOTURN']
tracker_type = tracker_types[1]
if tracker_type == tracker_types[0]:
tracker = cv2.TrackerBoosting_create()
elif tracker_type == tracker_types[1]:
tracker = cv2.TrackerMIL_create()
elif tracker_type == tracker_types[2]:
tracker = cv2.TrackerKCF_create()
elif tracker_type == tracker_types[3]:
tracker = cv2.TrackerTLD_create()
elif tracker_type == tracker_types[4]:
tracker = cv2.TrackerMedianFlow_create()
elif tracker_type == tracker_types[5]:
tracker = cv2.TrackerGOTURN_create()
这种方法似乎对我很有效。
新版本的 openCV 使用例如:TrackerKCF_create() 符号。
你可以找到新的例子here
一旦安装结束。所有文件都安装在
/usr/local/
个文件夹。
但是要使用它,您的 Python 应该能够找到
OpenCV
模块。
你有两个选择。
将模块移动到Python路径中的任意文件夹:Python路径可以在Python终端输入import sys;print sys.path
找到。它将打印出许多位置。将 /usr/local/lib/python2.7/site-packages/cv2.so
移动到此文件夹中的任何一个。例如,su mv /usr/local/lib/python2.7/site-packages/cv2.so /usr/lib/python2.7/
→ 站点包。但是每次安装 OpenCV
.
时都必须这样做
在PYTHON_PATH
中加上/usr/local/lib/python2.7/site-packages
:只做一次。只需打开 ~/.bashrc
并向其添加以下行,然后注销并返回。 export PYTHONPATH=$PYTHONPATH:/usr/local/lib/python2.7/site-packages
。这样 OpenCV 安装就完成了。打开终端并尝试
导入 cv2.
只需安装opencv-contrib-python
pip install opencv-contrib-python
它会起作用的!
我正在使用 python 2.7 和 opencv 3.1 我想 运行 一个跟踪对象的代码:
import cv2
import sys
if __name__ == '__main__' :
# Set up tracker.
# Instead of MIL, you can also use
# BOOSTING, KCF, TLD, MEDIANFLOW or GOTURN
tracker = cv2.Tracker_create("MIL")
# Read video
video = cv2.VideoCapture("videos/chaplin.mp4")
# Exit if video not opened.
if not video.isOpened():
print "Could not open video"
sys.exit()
# Read first frame.
ok, frame = video.read()
if not ok:
print 'Cannot read video file'
sys.exit()
# Define an initial bounding box
bbox = (287, 23, 86, 320)
# Uncomment the line below to select a different bounding box
# bbox = cv2.selectROI(frame, False)
# Initialize tracker with first frame and bounding box
ok = tracker.init(frame, bbox)
但是当我 运行 它时,我遇到了这个错误:
AttributeError: 'module' object has no attribute 'Tracker_create'
这是源代码:http://www.learnopencv.com/object-tracking-using-opencv-cpp-python/ 我正在寻找解决方案,但找不到任何有用的东西…… 我该怎么做才能将此模块添加到我的 opencv 库中?
您似乎没有使用 opencv_contrib 模块编译 OpenCV。你必须重新编译它。您可以在 this 博文中找到一个很好的分步教程。
编辑:
如果您需要在 Windows 上编译它,您可以使用
希望对您有所帮助。
我认为最简单和最快的方法是通过 .whl 文件安装。 @foobar 在 post @kyjanond 链接中给出了答案,但您可以从以下链接获取 .whl 文件。
OpenCV:https://pypi.python.org/pypi/opencv-python/3.3.0.10
OpenCV 贡献:https://pypi.python.org/pypi/opencv-contrib-python/3.3.0.10
我在Python2.7上安装了OpenCV 3.3.0,所以我下载了:
- opencv_python-3.3.0.10-cp27-cp27m-win32.whl
- opencv_contrib_python-3.3.0.10-cp27-cp27m-win32.whl
要安装,我运行:
- python -m pip install opencv_python-3.3.0.10-cp27-cp27m-win32.whl
- python -m pip install opencv_contrib_python-3.3.0.10-cp27-cp27m-win32.whl
这行得通,但在 OpenCV 的更新版本中,跟踪器函数的调用方式发生了变化。
GitHub 存储库中的原始代码是:
tracker_types = ['BOOSTING', 'MIL','KCF', 'TLD', 'MEDIANFLOW', 'GOTURN']
tracker_type = tracker_types[1]
tracker = cv2.Tracker_create(tracker_type)
我改成了
tracker_types = ['BOOSTING', 'MIL','KCF', 'TLD', 'MEDIANFLOW', 'GOTURN']
tracker_type = tracker_types[1]
if tracker_type == tracker_types[0]:
tracker = cv2.TrackerBoosting_create()
elif tracker_type == tracker_types[1]:
tracker = cv2.TrackerMIL_create()
elif tracker_type == tracker_types[2]:
tracker = cv2.TrackerKCF_create()
elif tracker_type == tracker_types[3]:
tracker = cv2.TrackerTLD_create()
elif tracker_type == tracker_types[4]:
tracker = cv2.TrackerMedianFlow_create()
elif tracker_type == tracker_types[5]:
tracker = cv2.TrackerGOTURN_create()
这种方法似乎对我很有效。
新版本的 openCV 使用例如:TrackerKCF_create() 符号。
你可以找到新的例子here
一旦安装结束。所有文件都安装在
/usr/local/
个文件夹。
但是要使用它,您的 Python 应该能够找到
OpenCV
模块。
你有两个选择。
将模块移动到Python路径中的任意文件夹:Python路径可以在Python终端输入
import sys;print sys.path
找到。它将打印出许多位置。将/usr/local/lib/python2.7/site-packages/cv2.so
移动到此文件夹中的任何一个。例如,su mv /usr/local/lib/python2.7/site-packages/cv2.so /usr/lib/python2.7/
→ 站点包。但是每次安装OpenCV
. 时都必须这样做
在
PYTHON_PATH
中加上/usr/local/lib/python2.7/site-packages
:只做一次。只需打开~/.bashrc
并向其添加以下行,然后注销并返回。export PYTHONPATH=$PYTHONPATH:/usr/local/lib/python2.7/site-packages
。这样 OpenCV 安装就完成了。打开终端并尝试 导入 cv2.
只需安装opencv-contrib-python
pip install opencv-contrib-python
它会起作用的!