opencv TrackerMIL c++
时间: 2023-09-12 17:06:17 浏览: 200
Opencv跟踪程序
下面是一个使用TrackerMIL算法进行目标跟踪的C++示例代码:
```c++
#include <opencv2/opencv.hpp>
using namespace cv;
int main() {
// 打开视频文件
VideoCapture cap("test.mp4");
if (!cap.isOpened()) {
std::cout << "Error opening video file" << std::endl;
return -1;
}
// 读取第一帧图像
Mat frame;
cap >> frame;
if (frame.empty()) {
std::cout << "Error reading frame" << std::endl;
return -1;
}
// 选择ROI
Rect2d roi = selectROI(frame);
// 初始化TrackerMIL算法
Ptr<Tracker> tracker = TrackerMIL::create();
tracker->init(frame, roi);
// 循环读取视频帧
while (true) {
// 读取下一帧图像
cap >> frame;
if (frame.empty()) {
break;
}
// 更新目标位置
bool success = tracker->update(frame, roi);
if (success) {
// 绘制目标框
rectangle(frame, roi, Scalar(0, 0, 255), 2);
}
// 显示结果
imshow("Tracking", frame);
if (waitKey(1) == 27) {
break;
}
}
// 释放资源
cap.release();
destroyAllWindows();
return 0;
}
```
该代码首先打开一个视频文件,然后读取第一帧图像,选择ROI,并使用TrackerMIL算法初始化跟踪器。然后,在循环中读取每一帧图像,并使用TrackerMIL算法更新目标位置。如果更新成功,就绘制目标框。最后,显示跟踪结果,并等待用户按下ESC键退出程序。
阅读全文