Я пытаюсь проанализировать проблему отслеживания объекта с помощью алгоритма DSST (точная оценка масштаба для отслеживания RobustVisual). Тем не менее, мое тестовое видео 2k, и функция imshow не может показать это ясно. Более того, структура кода из github полностью упакована ... не легко найти код для внесения каких-либо изменений.
Я пытался добавить код
(
//cv::namedWindow(_windowTitle.c_str(), cv::WINDOW_AUTOSIZE);
//cv::resizeWindow(_windowTitle.c_str(),980,600);
)
выше imshow
, но на самом деле это не работает, просто измените размер окна, но не можете изменить размер видео.
if (_paras.showOutput)
{
Mat hudImage;
_image.copyTo(hudImage);
rectangle(hudImage, _boundingBox, Scalar(0, 0, 255), 2);
Point_<double> center;
center.x = _boundingBox.x + _boundingBox.width / 2;
center.y = _boundingBox.y + _boundingBox.height / 2;
circle(hudImage, center, 3, Scalar(0, 0, 255), 2);
stringstream ss;
ss << "FPS: " << fps;
putText(hudImage, ss.str(), Point(20, 20), FONT_HERSHEY_TRIPLEX, 0.5, Scalar(255, 0, 0));
ss.str("");
ss.clear();
ss << "#" << _frameIdx;
putText(hudImage, ss.str(), Point(hudImage.cols - 60, 20), FONT_HERSHEY_TRIPLEX, 0.5, Scalar(255, 0, 0));
if (_debug != 0)
_debug->printOnImage(hudImage);
if (!_targetOnFrame)
{
cv::Point_<double> tl = _boundingBox.tl();
cv::Point_<double> br = _boundingBox.br();
line(hudImage, tl, br, Scalar(0, 0, 255));
line(hudImage, cv::Point_<double>(tl.x, br.y),
cv::Point_<double>(br.x, tl.y), Scalar(0, 0, 255));
}
//cv::namedWindow(_windowTitle.c_str(), cv::WINDOW_AUTOSIZE);
//cv::resizeWindow(_windowTitle.c_str(),980,600);
imshow(_windowTitle.c_str(), hudImage);
if (!_paras.imgExportPath.empty())
{
stringstream ssi;
ssi << setfill('0') << setw(5) << _frameIdx << ".png";
std::string imgPath = _paras.imgExportPath + ssi.str();
try
{
imwrite(imgPath, hudImage);
}
catch (runtime_error& runtimeError)
{
cerr << "Could not write output images: " << runtimeError.what() << endl;
}
}
}
Я ожидаю, что выходное видео будет отображаться полностью, так что я смогу найти его в правой зоне.