派生自 development/c++

pansen
2019-03-07 d3b7bbe7102cd089680a828f5d8f6402c8cf6342
QiaoJiaSystem/YoloServer/YoloDetectClientTest.cpp
@@ -9,12 +9,13 @@
#include <basic/pipe/PipeController.h>
#include <basic/pipe_element/ffmpeg/VideoCaptureElement.h>
#include "ImageDrawElement.h"
#include <YoloRpcElement.h>
#include "YoloRpcElement.h"
#include <basic/util/app/AppPreference.hpp>
#include <basic/util/opencv/CvUtil.h>
class Controllor : public PipeController {
public:
    Controllor(const int index, const std::string &rtsp) : m_videoCaptureElement(rtsp, 25, 1000, 0),
    Controllor(const int index, const std::string &rtsp) : m_videoCaptureElement(rtsp, 25, -1, 0),
                                                           m_YoloRpcElement(std::to_string(index) + "YoloRpc") {
        m_index = index;
        m_rtsp = rtsp;
@@ -36,7 +37,7 @@
        });
        m_imageDrawElement.registerConnector([&] {
//            ImageShowElement::showImage(std::to_string(m_index), *m_imageDrawElement.getImage());
            ImageShowElement::showImage(std::to_string(m_index), *m_imageDrawElement.getImage());
        });
        m_videoCaptureElement.setOutPutInterval(3);
@@ -55,24 +56,63 @@
    int m_index;
};
void darwProperty(cv::Mat &image, string key, string value, int x, int y) {
    cv::putText(image, key + ": " + value, cv::Point(x, y), cv::HersheyFonts::FONT_HERSHEY_PLAIN, 1.5,
                cv::Scalar(255, 255, 0), 2);
}
//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]);
//    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);
    appPref.setIntData("yolo.port", 10003);
//    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 = new Controllor(1, "/home/bsk/210235C23NF187000045$2019-02-28-23-07-30_209850_210049.mp4");
    _Controllor->start();
    getchar();
    YoloRpcElement m_YoloRpcElement("YoloRpc");
    ImageDrawElement m_imageDrawElement;
    m_YoloRpcElement.start();
    m_imageDrawElement.start();
    auto img = cv::imread("/home/bsk/Desktop/wubao2.jpg");
    m_YoloRpcElement.setImage(img);
    m_YoloRpcElement.submit();
    m_YoloRpcElement.registerConnector([&] {
    });
    sleep(2);
    auto res = m_YoloRpcElement.getLastScoreRects();
    for (auto yoloObj: res) {
        auto rect = CvUtil::zoomRect(yoloObj.rect, 1, 1);
        //[{"x":1.5999756,"y":82.533325},{"x":1.5999756,"y":180.53333},{"x":61.599976,"y":175.53333},{"x":63.599976,"y":66.533325}]
        //cv::rectangle(image, cv::Rect(4,328,252,480 ), cv::Scalar(0, 0, 255), 2);
        cv::rectangle(img, rect, yoloObj.id >= 0 ? cv::Scalar(255, 0, 0) : cv::Scalar(0, 255, 255), 2);
        int i = 0;
        for (auto &property:yoloObj.properties) {
            darwProperty(img, property.first, property.second, rect.x + rect.width, rect.y + 40 * i++);
        }
    }
    cv::imwrite("img/test2.jpg", img);
    cv::imshow("test", img);
//    for (int i = 0; i < num; i++) {
//        Controllor *_Controllor = new Controllor(i, path);
//        _Controllor->start();
//    }
//    Controllor _Controllor(0, "/home/bsk/2.mp4");
//    _Controllor.start();