前言
核相关滤波单目标跟踪算法 Kernel Correlation Filter (KCF)是2014年提出的算法,当时,无论是跟踪效果还是速度上都有十分亮眼的表现,在opencv中已经有了官方实现的KCF库,但是效果不佳,因此有了以下的替换版本。在这里记录下安装该版本的流程(已解决大多数问题)。
库的安装在linux下进行。
源码:KCF 单目标跟踪器
opencv安装
1.准备工作
需要cmake和opencv源码。
opencv 的版本推荐opencv3.0.0,因为其他版本可能存在数据转换上的问题导致cmake失败。
2.安装过程
进入下载好opencv源码的目录,输入指令:
unzip opencv-3.0.0.zip
cd opencv-3.0.0
mkdir build && cd build
cmake -D CMAKE_INSTALL_PREFIX=/YourPath/opencv3 ..
如果出现了与cuda相关的问题可以在后面再加个-D WITH_CUDA=OFF
make j4
make install
添加环境变量
vim ~/.bashrc
将下面的内容添加进去
PKG_CONFIG_PATH="/YourPath/opencv/lib/pkgconfig/:$PKG_CONFIG_PATH"
export PKG_CONFIG_PATH
export LD_LIBRARY_PATH="/YourPath/opencv/lib:$LD_LIBRARY_PATH"
export PATH="/YourPath/opencv/lib:$PATH"
export PATH="/YourPath/opencv/include:$PATH"
添加LD_LIBRARY_PATH路径是为了
保存退出后,输入指令更新环境变量:
source ~/.bashrc
输入指令进行测试如果显示版本号,则表示安装成功:
pkg-config --modversion opencv
KCF库
提前安装好需要的库:lapsolver,cython,opencv-python,如果使用pip安装,指令后面加入-i https://pypi.tuna.tsinghua.edu.cn/simple/ 可以提高下载速度。
进入下载的KCF源码路径,解压文件:
unzip KCFcpp-py-wrapper-master.zip
cd KCFcpp-py-wrapper-master
修改setup.py文件:
from distutils.core import setup, Extension
from Cython.Distutils import build_ext
import numpy
#将下面两处的路径修改为安装好的opencv对应路径
libdr = ['/YourPath/opencv/lib']
incdr = [numpy.get_include(), '/YourPath/opencv/include']
ext = [
Extension('cvt', ['python/cvt.pyx'],
language = 'c++',
extra_compile_args = ['-std=c++11'],
include_dirs = incdr,
library_dirs = libdr,
libraries = ['opencv_core']),
#),
Extension('KCF', ['python/KCF.pyx', 'src/kcftracker.cpp', 'src/fhog.cpp'],
language = 'c++',
extra_compile_args = ['-std=c++11'],
include_dirs = incdr,
library_dirs = libdr,
libraries = ['opencv_core', 'opencv_imgproc'])
]
setup(
name = 'app',
cmdclass = {'build_ext':build_ext},
ext_modules = ext
)
#python setup.py build_ext --inplace
执行安装指令:
python setup.py install
安装完成后,如果能在python里import KCF且没有错误则表示安装成功。