#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;
|
}
|