#include "samples_utility.hpp"
13void sobelExtractor(
const Mat img,
const Rect roi,
Mat& feat);
15int main(
int argc,
char** argv ){
19 " 用法: tracker <video_name>\n"
21 " example_tracking_kcf Bolt/img/%04d.jpg\n"
22 " example_tracking_kcf faceocc2.webm\n"
33 param.
desc_pca = TrackerKCF::GRAY | TrackerKCF::CN;
45 tracker->setFeatureExtractor(sobelExtractor);
49 std::string video = argv[1];
54 roi=selectROI(
"tracker",frame);
61 tracker->init(frame,roi);
64 printf(
"开始追踪过程,按ESC键退出。\n");
70 if(frame.rows==0 || frame.cols==0)
74 tracker->update(frame,roi);
77 rectangle( frame, roi,
Scalar( 255, 0, 0 ), 2, 1 );
80 imshow(
"tracker",frame);
83 if(waitKey(1)==27)
break;
89void sobelExtractor(
const Mat img,
const Rect roi,
Mat& feat){
96 if(roi.
x<0){region.
x=0;region.
width+=roi.
x;}
97 if(roi.
y<0){region.
y=0;region.
height+=roi.
y;}
104 patch=img(region).
clone();
105 cvtColor(patch,patch, COLOR_BGR2GRAY);
109 int addTop,addBottom, addLeft, addRight;
110 addTop=region.
y-roi.
y;
112 addLeft=region.
x-roi.
x;
115 copyMakeBorder(patch,patch,addTop,addBottom,addLeft,addRight,BORDER_REPLICATE);
CV_NODISCARD_STD Mat clone() const
创建数组及其底层数据的完整副本。
int rows
行数和列数,当矩阵超过 2 维时为 (-1, -1)
定义 mat.hpp:2204
用于 2D 矩形的模板类。
定义 types.hpp:444
_Tp x
左上角x坐标
定义 types.hpp:487
_Tp y
左上角y坐标
定义 types.hpp:488
_Tp width (宽度)
矩形的宽度
定义 types.hpp:489
_Tp height (高度)
矩形的高度
定义 types.hpp:490
从视频文件、图像序列或摄像头捕获视频的类。
定义 videoio.hpp:786
void copyMakeBorder(InputArray src, OutputArray dst, int top, int bottom, int left, int right, int borderType, const Scalar &value=Scalar())
在图像周围形成边框。
void merge(const Mat *mv, size_t count, OutputArray dst)
将多个单通道数组合并为一个多通道数组。
std::shared_ptr< _Tp > Ptr
定义 cvstd_wrapper.hpp:23
#define CV_32F
定义位于 interface.h:78
void sobel(InputArray _src, OutputArray _dx, OutputArray _dy, int kernel_size, int borderType, int borderValue)
从源亮度数据创建2D梯度图像,不进行归一化。计算X方向1...
void cvtColor(InputArray src, OutputArray dst, int code, int dstCn=0, AlgorithmHint hint=cv::ALGO_HINT_DEFAULT)
将图像从一种颜色空间转换为另一种。
void Sobel(InputArray src, OutputArray dst, int ddepth, int dx, int dy, int ksize=3, double scale=1, double delta=0, int borderType=BORDER_DEFAULT)
使用扩展 Sobel 算子计算图像的一阶、二阶、三阶或混合导数。
int main(int argc, char *argv[])
定义 highgui_qt.cpp:3
bool compress_feature
激活PCA方法以压缩特征
定义 tracking.hpp:130
int desc_pca
TrackerKCF::MODE 的压缩描述符
定义 tracking.hpp:133
int desc_npca
TrackerKCF::MODE 的非压缩描述符
定义 tracking.hpp:134
int compressed_size
压缩后的特征大小
定义 tracking.hpp:132