将模型放到工程中
测试代码
#include <opencv2/tracking.hpp>
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace std;
using namespace cv;
int main(int argc, char** argv) {
String video_name = "video.avi";
VideoCapture cap(0);
if (!cap.isOpened())
{
cout << "***Could not initialize capturing...***\n";
return -1;
}
//cv::Ptr<cv::Tracker> tracker = cv::TrackerKCF::create();
//cv::Ptr<cv::Tracker> tracker = cv::TrackerCSRT::create();
//cv::Ptr<cv::Tracker> tracker = cv::TrackerBoosting::create();
//cv::Ptr<cv::Tracker> tracker = cv::TrackerMOSSE::create();
cv::Ptr<cv::Tracker> tracker = cv::TrackerGOTURN::create();
//cv::Ptr<cv::Tracker> tracker = cv::TrackerTLD::create();
if (!tracker)
{
cout << "***Error in the instantiation of the tracker...***\n";
return -1;
}
Mat frame;
namedWindow("Tracking API", 1);
Mat image;
Rect2d boundingBox;
bool paused = false;
cap >> frame;
cout << frame.type() << " " << frame.channels() << " ";
frame.copyTo(image);
imshow("Tracking API", image);
waitKey(1);
boundingBox = selectROI("Tracking API", image, false, false);
bool initialized = false;
int frameCounter = 0;
int64 timeTotal = 0;
for (;; )
{
if (!paused)
{
if (initialized) {
cap >> frame;
if (frame.empty()) {
break;
}
frame.copyTo(image);
}
if (!initialized)
{
//initializes the tracker
if (!tracker->init(frame, boundingBox))
{
cout << "***Could not initialize tracker...***\n";
return -1;
}
initialized = true;
}
else if (initialized)
{
int64 frameTime = getTickCount();
//updates the tracker
if (tracker->update(frame, boundingBox))
{
rectangle(image, boundingBox, Scalar(255, 0, 0), 2, 1);
}
frameTime = getTickCount() - frameTime;
timeTotal += frameTime;
}
imshow("Tracking API", image);
frameCounter++;
}
char c = (char)waitKey(1);
if (c == 'q')
break;
if (c == 'p')
paused = !paused;
}
double s = frameCounter / (timeTotal / getTickFrequency());
printf("FPS: %f\n", s);
getchar();
return 0;
}