盒子
盒子

解决OpenCV 'cv2.cv2' has no attribute 'TrackerCSRT_create'

使用OpenCV(version:3.4.1)的追踪算法时,代码运行出现module ‘cv2.cv2’ has no attribute ‘TrackerCSRT_create’错误提示信息,显示cv2模块中没有TrackerCSRT_create,查阅一些资料发现应该是安装OpenCV方式的问题导致追踪算法不可用。

常用的OpenCV安装方式是pip安装或者sudo apt install opencv-python,这两种方式安装的OpenCV似乎并不完整,因为其中没有安装opencv_contrib模块,该模块存放OpenCV中一些不稳定的算法、正在开发的模块以及一些申请专利的算法,其中包含了Surf、Sift算法等,在OpenCV2版本中这些模块被集成进去,OpenCV3则需要单独安装,这也是导致追踪算法等一些其他模块不可用的原因。

可以通过两种方式来安装:1. pip安装opencv_contrib模块 2. 源码编译安装OpenCV和opencv_contrib

1. pip安装OpenCV和open_contrib

1
2
pip install opencv-python
pip install opencv-contrib-python

python中执行以下命令

1
2
import cv2
cv2.TrackerCSRT_create

如果没有出现错误信息表示模块可以正常使用了。

2.源码编译安装

系统环境如下:

1
2
OS: Linux Mint 18.2 64bit
Python Version: Python3.6.5 (Anaconda)

从Github上下载OpenCV源码

1
2
git clone https://github.com/opencv/opencv.git
git checkout 3.4.1

或者在Github上的tag标签中点击3.4.1版本号,之后点击Doanload zip下载压缩包。

单独下载opencv_contrib模块

1
2
wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/3.4.1.zip
unzip opencv_contrib.zip

安装OpenCV安装过程中所需要的一些依赖包

1
2
3
4
5
6
7
sudo apt update
sudo apt install python3-dev cmake pkg-config build-essential
sudo apt install libtiff-dev libjpeg-dev libpng-dev # 安装一些图像处理相关包
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev # 视频
sudo apt-get install libxvidcore-dev libx264-dev # 视频相关
sudo apt-get install libgtk-3-dev # GUI操作相关
sudo apt-get install libatlas-base-dev gfortran # OpenCV性能优化

编译安装OpenCV

1
2
3
4
5
6
7
cd opencv
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local \
-D INSTALL_PYTHON_EXAMPLES=ON -D INSTALL_C_EXAMPLES=OFF \
-D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib-3.4.1/modules \
-D PYTHON_EXECUTABLE=/usr/bin/python -D BUILD_EXAMPLES=ON ..

上述指令中OPENCV_EXTRA_MODULES_PATH需要填写自己下载解压的opencv_contrib目录路径,PYTHON_EXECUTABLE需要更换成自己的python路径。构建过程可能会有一些慢,其中还会从网络上下载一些文件。

使用cmake指令编译OpenCV,make -j8表示使用8个CPU核心编译OpenCV,具体情况需要根据自己的CPU来分配适合的核心数目。

1
2
make -j8
sudo make install

打开python shell,输入如下指令

1
2
import cv2
cv2.TrackerCSRT_create

若出现如下类似信息

表明OpenCV和opencv_contrib均安装完成。

到此,OpenCV安装完毕。