LWQ
2025-07-14 52d230fd0eb38adc5c6f4c6d6ed3786a3c19354d
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
53
54
55
56
57
58
#pragma once
 
#ifdef _WIN32
    #ifdef AI_DETECT_EX_EXPORTS
        #define AI_DETECT_EX_API __declspec(dllexport)
    #else
        #define AI_DETECT_EX_API __declspec(dllimport)
    #endif
#else
    #define AI_DETECT_EX_API
#endif
 
#include <string>
#include <vector>
 
class AI_DETECT_EX_API AiDetectResult
{
public:
    int type;
    char typeName[64];
 
    double x;
    double y;
    double width;
    double height;
 
    double score;
};  // class AiDetectResult
 
namespace cv
{
    class Mat;
}  // namespace cv
 
class ProcessController;
class AI_DETECT_EX_API AiDetectEx
{
public:
    static AiDetectEx& instance();
 
    bool startServer();
    void stopServer();
 
    bool detect(cv::Mat const & srcImage, std::vector<AiDetectResult>& results, std::string channel, unsigned long timeOut = 0xFFFFFFFF);
    bool detect(unsigned char* image, int width, int height, int step, std::vector<AiDetectResult>& results, std::string channel, unsigned long timeOut = 0xFFFFFFFF);
 
    std::string generateChannel();
    void releaseChannel(std::string channel);
 
    AiDetectEx(const AiDetectEx&) = delete;
    AiDetectEx& operator=(const AiDetectEx&) = delete;
private:
    AiDetectEx();
    ~AiDetectEx();
 
    bool isDisplay_;
    ProcessController* controller_;
};