wangrong
2025-01-03 2c4b8838f89bebca97615c5f0bac2c58e0349771
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#include <opencv2/core/core.hpp>
#include <opencv2/freetype.hpp>
#include <string>
#include <vector>
 
#include "../models/vehicle_plate_detector.h"
using namespace std;
 
/*
*  vehicle plate demo
*/
 
std::map<std::string, cv::Scalar> colors {{"blue", cv::Scalar(255, 0, 0)},
                                        {"green", cv::Scalar(0, 255, 0)},
                                        {"yellow", cv::Scalar(0, 255, 255)},
                                        {"white", cv::Scalar(255, 255, 255)}};
 
int main(){
    std::string plateModelPath = "./vp_data/models/trt/plate/det_v8.5.trt";
    std::string charModelPath = "./vp_data/models/trt/plate/rec_v8.5.trt";
    auto image = cv::imread("./vp_data/test_images/plates/0.jpg");
    auto image2 = cv::imread("./vp_data/test_images/plates/1.jpg");
    auto image3 = cv::imread("./vp_data/test_images/plates/2.jpg");
    auto plateDetector = new trt_vehicle::VehiclePlateDetector(plateModelPath, charModelPath);
 
    auto ft2 = cv::freetype::createFreeType2();
    ft2->loadFontData("./vp_data/font/NotoSansCJKsc-Medium.otf", 0);
 
    std::vector<std::vector<trt_vehicle::Plate>> results;
    std::vector<cv::Mat> img_datas = {image, image2, image3};
    plateDetector->detect(img_datas, results, true);
 
    for (int i = 0; i < results.size(); i++) {
        /* code */
        for (int j = 0; j < results[i].size(); j++)
        {
            /* code */
            auto& plate = results[i][j];
            cv::rectangle(img_datas[i], cv::Rect(plate.x, plate.y, plate.width, plate.height), colors.at(plate.color), 2);
            //cv::putText(img_datas[i], plate.text, cv::Point(plate.x, plate.y), 1, 0.8, colors.at(plate.color));
            ft2->putText(img_datas[i], plate.text, cv::Point(plate.x, plate.y), 20, colors.at(plate.color), cv::FILLED, cv::LINE_AA, true);
        }
        
    }
    cv::imshow("image", image);
    cv::imshow("image2", image2);
    cv::imshow("image3", image3);
    
    cv::waitKey(0);
    delete plateDetector;
    return 0;
}