main.cpp 2.28 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
    // 创建YOLOV7检测器
    migraphxSamples::DetectorYOLOV7 detector;
    migraphxSamples::InitializationParameterOfDetector initParamOfDetectorYOLOV7;
    initParamOfDetectorYOLOV7.configFilePath = CONFIG_FILE;
liucong's avatar
liucong committed
14
15
    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
    LOG_INFO(stdout, "succeed to initialize detector\n");

    // 读取测试图片
liucong's avatar
liucong committed
23
    cv::Mat srcImage = cv::imread("../Resource/Images/bus.jpg", 1);
liucong's avatar
liucong committed
24
25
26

    // 推理
    std::vector<migraphxSamples::ResultOfDetection> predictions;
liucong's avatar
liucong committed
27
    detector.Detect(srcImage, predictions);
liucong's avatar
liucong committed
28
29

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

shizhm's avatar
shizhm committed
36
        std::string label = cv::format("%.2f", result.confidence);
liucong's avatar
liucong committed
37
38
39
        label             = result.className + " " + label;
        int left          = predictions[i].boundingBox.x;
        int top           = predictions[i].boundingBox.y;
shizhm's avatar
shizhm committed
40
        int baseLine;
shizhm's avatar
shizhm committed
41
        cv::Size labelSize = cv::getTextSize(label, cv::FONT_HERSHEY_SIMPLEX, 0.5, 1, &baseLine);
liucong's avatar
liucong committed
42
43
44
45
46
47
48
49
        top                = max(top, labelSize.height);
        cv::putText(srcImage,
                    label,
                    cv::Point(left, top - 10),
                    cv::FONT_HERSHEY_SIMPLEX,
                    1,
                    cv::Scalar(0, 255, 255),
                    2);
shizhm's avatar
shizhm committed
50

liucong's avatar
liucong committed
51
52
53
54
55
56
57
58
        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
59
    }
liucong's avatar
liucong committed
60
61
    cv::imwrite("Result.jpg", srcImage);
    LOG_INFO(stdout, "Detection results have been saved to ./Result.jpg\n");
liucong's avatar
liucong committed
62

Your Name's avatar
Your Name committed
63
64
    return 0;
}