派生自 development/c++

xuxiuxi
2019-03-04 17675f1c6447b6e014b520608ce6d5f1f2e9707a
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
#include "basic/util/resource/ResourcesManager.h"
#include <string>
#include <iostream>
#include <unistd.h>
#include <thread>
 
#include <basic/pipe/PipeElement.h>
#include <basic/pipe_element/ImageShowElement.h>
#include <basic/pipe/PipeController.h>
#include <basic/pipe_element/ffmpeg/VideoCaptureElement.h>
#include "ImageDrawElement.h"
#include "YoloRpcElement.h"
#include <basic/util/app/AppPreference.hpp>
 
class Controllor : public PipeController {
public:
    Controllor(const int index, const std::string &rtsp) : m_videoCaptureElement(rtsp, 25, 1000, 0),
                                                           m_YoloRpcElement(std::to_string(index) + "YoloRpc") {
        m_index = index;
        m_rtsp = rtsp;
        m_videoCaptureElement.registerConnector([&] {
            if (!m_YoloRpcElement.isBusy()) {
                m_YoloRpcElement.setImage(m_videoCaptureElement.getImage());
                //            paElement.setImage(videoCaptureElement.getImage());
                //            paNumElement.setImage(videoCaptureElement.getImage());
                m_YoloRpcElement.submit();
            }
            if (!m_imageDrawElement.isBusy()) {
                m_imageDrawElement.setImage(m_videoCaptureElement.getImage());
                m_imageDrawElement.submit();
            }
        });
 
        m_YoloRpcElement.registerConnector([&] {
            m_imageDrawElement.setYoloObjects(m_YoloRpcElement.getLastScoreRects());
        });
 
        m_imageDrawElement.registerConnector([&] {
//            ImageShowElement::showImage(std::to_string(m_index), *m_imageDrawElement.getImage());
 
        });
        m_videoCaptureElement.setOutPutInterval(3);
        registerElement(m_videoCaptureElement);
        registerElement(m_YoloRpcElement);
        registerElement(m_imageDrawElement);
    }
 
    virtual ~Controllor() {}
 
private:
    std::string m_rtsp;
    ffmpeg::VideoCaptureElement m_videoCaptureElement;
    YoloRpcElement m_YoloRpcElement;
    ImageDrawElement m_imageDrawElement;
    int m_index;
};
 
//using namespace std;
int main(int argc, char *argv[]) {
    SAVE_APP_ARGS
 
    int num = atoi(argv[1]);
    std::string path(argv[2]);
    int portNum = atoi(argv[3]);
    //yolo server
    appPref.setStringData("yolo.proxy", "yoloServer");
    //#todo
    appPref.setStringData("yolo.ip", "");
    appPref.setIntData("yolo.port", portNum);
//    rpcClient(appPref.getStringData("yolo.proxy"), appPref.getStringData("yolo.ip"), appPref.getLongData("yolo.port"),"tcp"),
 
    for (int i = 0; i < num; i++) {
        Controllor *_Controllor = new Controllor(i, path);
        _Controllor->start();
    }
 
//    Controllor _Controllor(0, "/home/bsk/2.mp4");
//    _Controllor.start();
//    Controllor _Controllor1(1, "/home/bsk/2.mp4");
//    _Controllor1.start();
//    Controllor _Controllor2(2, "/home/bsk/2.mp4");
//    _Controllor2.start();
//    Controllor _Controllor3(3, "/home/bsk/2.mp4");
//    _Controllor3.start();
//    Controllor _Controllor4(4, "/home/bsk/2.mp4");
//    _Controllor4.start();
 
//    Controllor _Controllor0(1,"/home/basic/video/201804/day0416/01010002606000000-slice2.mp4");
//    _Controllor0.start();
//    cout << "Hello World!" << endl;
//    Controllor _Controllor1(2,"/home/basic/video/201804/day0416/01010002609000000-slice.mp4");
//    _Controllor1.start();
//    Controllor _Controllor2(3,"/home/basic/video/201804/day0416/01010002611000000-slice.mp4");
//    _Controllor2.start();
//    Controllor _Controllor3(4,"/home/basic/video/201804/night0418/02000000652000100-slice.mp4");
//    _Controllor3.start();
//    Controllor _Controllor4(5,"/home/basic/video/201804/night0418/02000000654000100-slice.mp4");
//    _Controllor4.start();
//    Controllor _Controllor5(6,"/home/basic/video/201804/night0418/02000000659000100-slice.mp4");
//    _Controllor5.start();
    while (true) { sleep(10); }
    return 0;
}