main.cpp 1.7 KB
Newer Older
Your Name's avatar
Your Name committed
1
2
3
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
liucong's avatar
liucong committed
4
5
6
#include <SimpleLog.h>
#include <Filesystem.h>
#include <YOLOV7.h>
Your Name's avatar
Your Name committed
7

liucong's avatar
liucong committed
8
int main()
Your Name's avatar
Your Name committed
9
{
liucong's avatar
liucong committed
10
11
12
13
14
15
    // 创建YOLOV7检测器
    migraphxSamples::DetectorYOLOV7 detector;
    migraphxSamples::InitializationParameterOfDetector initParamOfDetectorYOLOV7;
    initParamOfDetectorYOLOV7.configFilePath = CONFIG_FILE;
    migraphxSamples::ErrorCode errorCode=detector.Initialize(initParamOfDetectorYOLOV7);
    if(errorCode!=migraphxSamples::SUCCESS)
Your Name's avatar
Your Name committed
16
    {
liucong's avatar
liucong committed
17
18
        LOG_ERROR(stdout, "fail to initialize detector!\n");
        exit(-1);
Your Name's avatar
Your Name committed
19
    }
liucong's avatar
liucong committed
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
    LOG_INFO(stdout, "succeed to initialize detector\n");

    // 读取测试图片
    cv::Mat srcImage=cv::imread("../Resource/Images/bus.jpg",1);

    // 推理
    std::vector<migraphxSamples::ResultOfDetection> predictions;
    double time1 = cv::getTickCount();
    detector.Detect(srcImage,predictions);
    double time2 = cv::getTickCount();
    double elapsedTime = (time2 - time1)*1000 / cv::getTickFrequency();
    LOG_INFO(stdout, "inference time:%f ms\n", elapsedTime);

    // 获取推理结果
    LOG_INFO(stdout,"========== Detection Results ==========\n");
    for(int i=0;i<predictions.size();++i)
Your Name's avatar
Your Name committed
36
    {
liucong's avatar
liucong committed
37
38
39
40
41
        migraphxSamples::ResultOfDetection result=predictions[i];
        cv::rectangle(srcImage,result.boundingBox,cv::Scalar(0,255,255),2);

        LOG_INFO(stdout,"box:%d %d %d %d,label:%d,confidence:%f\n",predictions[i].boundingBox.x,
        predictions[i].boundingBox.y,predictions[i].boundingBox.width,predictions[i].boundingBox.height,predictions[i].classID,predictions[i].confidence);
Your Name's avatar
Your Name committed
42
    }
liucong's avatar
liucong committed
43
44
45
    cv::imwrite("Result.jpg",srcImage);
    LOG_INFO(stdout,"Detection results have been saved to ./Result.jpg\n");

Your Name's avatar
Your Name committed
46
47
    return 0;
}