main.cpp 3.13 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 <Crnn.h>
#include <SimpleLog.h>
#include <Filesystem.h>
Your Name's avatar
Your Name committed
7
8
9
10
11

void MIGraphXSamplesUsage(char* programName)
{
    printf("Usage : %s <index> \n", programName);
    printf("index:\n");
liucong's avatar
liucong committed
12
13
    printf("\t 0) Crnn sample.\n");
    printf("\t 1) Crnn Dynamic sample.\n");
Your Name's avatar
Your Name committed
14
15
}

liucong's avatar
liucong committed
16
17
18
void Sample_Crnn();
void Sample_Crnn_Dynamic();

liucong's avatar
liucong committed
19
int main(int argc, char* argv[])
Your Name's avatar
Your Name committed
20
{
liucong's avatar
liucong committed
21
    if(argc < 2 || argc > 2)
Your Name's avatar
Your Name committed
22
23
24
25
    {
        MIGraphXSamplesUsage(argv[0]);
        return -1;
    }
liucong's avatar
liucong committed
26
    if(!strncmp(argv[1], "-h", 2))
Your Name's avatar
Your Name committed
27
28
29
30
    {
        MIGraphXSamplesUsage(argv[0]);
        return 0;
    }
liucong's avatar
liucong committed
31
    switch(*argv[1])
Your Name's avatar
Your Name committed
32
    {
liucong's avatar
liucong committed
33
34
35
36
37
38
39
40
41
42
43
44
    case '0': {
        Sample_Crnn();
        break;
    }
    case '1': {
        Sample_Crnn_Dynamic();
        break;
    }
    default: {
        MIGraphXSamplesUsage(argv[0]);
        break;
    }
Your Name's avatar
Your Name committed
45
46
    }
    return 0;
liucong's avatar
liucong committed
47
48
49
50
51
52
53
}

void Sample_Crnn()
{
    // 创建CRNN文本识别
    migraphxSamples::Crnn crnn;
    migraphxSamples::InitializationParameterOfOcr initParamOfOcrCRNN;
liucong's avatar
liucong committed
54
    initParamOfOcrCRNN.configFilePath    = CONFIG_FILE;
liucong's avatar
liucong committed
55
    migraphxSamples::ErrorCode errorCode = crnn.Initialize(initParamOfOcrCRNN, false);
liucong's avatar
liucong committed
56
    if(errorCode ! = migraphxSamples::SUCCESS)
liucong's avatar
liucong committed
57
58
59
60
61
62
63
    {
        LOG_ERROR(stdout, "fail to initialize crnn!\n");
        exit(-1);
    }
    LOG_INFO(stdout, "succeed to initialize crnn\n");

    // 读取测试图片
liucong's avatar
liucong committed
64
    cv::Mat srcImage = cv::imread("../Resource/Images/text.jpg", 1);
liucong's avatar
liucong committed
65
66
67
68

    // 推理
    std::vector<char> resultRaw;
    std::vector<char> resultSim;
liucong's avatar
liucong committed
69
70
    crnn.Infer(srcImage, resultRaw, true, false);
    crnn.Infer(srcImage, resultSim, false, false);
liucong's avatar
liucong committed
71
72

    // 获取推理结果
liucong's avatar
liucong committed
73
    LOG_INFO(stdout, "========== Ocr Results ==========\n");
liucong's avatar
liucong committed
74
75
    for(int i = 0; i < resultRaw.size(); i++)
    {
liucong's avatar
liucong committed
76
77
        std::cout << resultRaw.at(i);
    }
liucong's avatar
liucong committed
78
79
80
81
82
83
84
85
86
87
88
89
90
    std::cout << " => ";
    for(int i = 0; i < resultSim.size(); i++)
    {
        std::cout << resultSim.at(i);
    }
    std::cout << std::endl;
}

void Sample_Crnn_Dynamic()
{
    // 创建CRNN文本识别
    migraphxSamples::Crnn crnn;
    migraphxSamples::InitializationParameterOfOcr initParamOfOcrCRNN;
liucong's avatar
liucong committed
91
    initParamOfOcrCRNN.configFilePath    = CONFIG_FILE;
liucong's avatar
liucong committed
92
    migraphxSamples::ErrorCode errorCode = crnn.Initialize(initParamOfOcrCRNN, true);
liucong's avatar
liucong committed
93
    if(errorCode ! = migraphxSamples::SUCCESS)
liucong's avatar
liucong committed
94
95
96
97
98
99
100
101
102
103
    {
        LOG_ERROR(stdout, "fail to initialize crnn!\n");
        exit(-1);
    }
    LOG_INFO(stdout, "succeed to initialize crnn\n");

    // 读取测试图片
    std::vector<cv::Mat> srcImages;
    cv::String folder = "../Resource/Images/CrnnDynamicPic";
    std::vector<cv::String> imagePathList;
liucong's avatar
liucong committed
104
105
    cv::glob(folder, imagePathList);
    for(int i = 0; i < imagePathList.size(); ++i)
liucong's avatar
liucong committed
106
    {
liucong's avatar
liucong committed
107
108
        cv::Mat srcImage = cv::imread(imagePathList[i], 1);
        srcImages.push_back(srcImage);
liucong's avatar
liucong committed
109
110
111
    }

    // 获取推理结果
liucong's avatar
liucong committed
112
113
114
    LOG_INFO(stdout, "========== Ocr Results ==========\n");
    for(int i = 0; i < srcImages.size(); ++i)
    {
liucong's avatar
liucong committed
115
        std::vector<char> resultSim;
liucong's avatar
liucong committed
116
        crnn.Infer(srcImages[i], resultSim, false, true);
liucong's avatar
liucong committed
117
118
119
120
121
122
123

        for(int i = 0; i < resultSim.size(); i++)
        {
            std::cout << resultSim.at(i);
        }
        std::cout << std::endl;
    }
Your Name's avatar
Your Name committed
124
}