• call Kernelized Correlation Filters Tracker(Matab) in Qt(c++)


    recently, i need call the KCF tracker in my graduation project. the KCF tracker is fast and best performance now. see http://home.isr.uc.pt/~henriques/circulant/, however, this only matlab version of KCF code in the author's homepage. i need to implement KCF in c++ version, however, i find it is hard to do it, because this is no opencv version of fhog which is used in the matlab version. and the correlation of complex number is hard too. So in the last , i build Windows Standalone Application. and it is easy to improve in matlab.
    so let do it now.

    build matlab Windows Standalone Application

    first let make a file runKCFexe.m

    function runKCFexe( base_path ,video)
    %./data/Benchmark/ Boy
    interp_factor = 0.02;
    kernel.sigma = 0.5;
    kernel.type = 'gaussian';
    kernel.poly_a = 1;
    kernel.poly_b = 9;
    feature_type = 'hog';
    features.hog = true;
    features.gray = false;
    features.hog_orientations = 9;
    cell_size = 4;
    
    padding = 1.5;  %extra area surrounding the target
    lambda = 1e-4;  %regularization
    output_sigma_factor = 0.1;  %spatial bandwidth (proportional to target)
    
    [img_files, pos, target_sz, ground_truth, video_path] = load_video_info(base_path, video);
    [positions, time] = tracker(video_path, img_files, pos, target_sz, ...
    			padding, kernel, lambda, output_sigma_factor, interp_factor, ...
    			cell_size, features, 0);
            
    fileID = fopen('centerPointResult.txt','w');
    fprintf(fileID,'%d %d
    ',positions');
    fclose(fileID);
    %fprintf('kcf finished %s
    ','done');
    end
    
    

    and edit the tracker.m to the follow:

    the box2[1] is the frame number and box2[2:5] is the rect box

    add the reference files like follows

    and then build

    and we will get the KCFexe.exe

    test run the KCFexe.exe

    Yehh, it works

    Qt C++ programming

    let's build a q widget application

    the OpenDir Button is used to select the dir path like

    the Qlabe is used to show the image.
    the project dir structure

    the dirpath and video is the Parameters for KCFexe.exe
    frameNo is used for read NO.image from capture , procOutput is used to get the frame num and rect box from KCFexe.exe output and store in the s_data,capturePath is used for VideoCapture.open function , program is the KCFexe.exe path,on_pushButton_clicked() is to select the dir,readyReadStandardOutput() is to read the KCFexe.exe output,processRect() is used to show image in Qlabel.RectReady() is signal for processRect.

    init and connect

    select dir

    run the KCFexe.exe

    read the output of KCFexe.exe

    show image in Qlabel

    Note ,because the speed of KCFexe.exe output is not the same with readyReadStandardOutput so the code is need in the processRect()

    finnally ,it run like this

  • 相关阅读:
    基于kafka-net实现的可以长链接的消息生产者
    Windows服务安装、卸载、启动和关闭的管理器
    基于Confluent.Kafka实现的KafkaConsumer消费者类和KafkaProducer消息生产者类型
    [转]C#中HttpClient使用注意:预热与长连接
    基于Confluent.Kafka实现的Kafka客户端操作类使用详解
    [转载]RabbitMQ消息可靠性分析
    ASP.NET Core3.1 MVC 添加验证规则
    asp.net core 3.1 webapi接口参数有时间类型取不到值得问题
    asp.net core 3.1 引用的元包dll版本兼容性问题解决方案
    Python安装和环境配置
  • 原文地址:https://www.cnblogs.com/yuliyang/p/4608877.html
Copyright © 2020-2023  润新知