派生自 development/c++

pansen
2019-03-04 f2a3422c62a1176b50038e0e7bd81f05227834b7
测试代码变动,及格式化变更
4个文件已修改
88 ■■■■ 已修改文件
QiaoJiaSystem/VideoToImageMulth/RtspCaptureElement.cpp 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
QiaoJiaSystem/YoloServer/ImageDrawElement.cpp 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
QiaoJiaSystem/YoloServer/YoloDetectClientTest.cpp 56 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
QiaoJiaSystem/YoloServer/YoloRpcElement.cpp 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
QiaoJiaSystem/VideoToImageMulth/RtspCaptureElement.cpp
@@ -8,7 +8,9 @@
#include <QString>
#include <QDateTime>
#include "RtspAnalysManager.h"
RtspCaptureElement::RtspCaptureElement(const std::string &path, const std::string& camId,int fps, int reopenTime, int gpuIndex,RtspAnalysManager* manager):
RtspCaptureElement::RtspCaptureElement(const std::string &path, const std::string &camId, int fps, int reopenTime,
                                       int gpuIndex, RtspAnalysManager *manager) :
    TimerElement(10),m_path(path),m_gpuIndex(gpuIndex),
    m_reopenTime(reopenTime),m_camId(camId),m_pManager(manager){
    m_cutPath= appPref.getStringData("user.loop.absolute.path");
@@ -18,8 +20,7 @@
}
//定时抓取图片,通过将图片放入RtspImageRedisElement的队列中,来减少视频的丢帧
void RtspCaptureElement::timerFunc()
{
void RtspCaptureElement::timerFunc() {
    bool ret = m_capture->grabFrame();
    if (!ret) {
@@ -58,8 +59,7 @@
    fireConnectors();
}
std::string RtspCaptureElement::MakeDir(const std::string &timeStamp)
{
std::string RtspCaptureElement::MakeDir(const std::string &timeStamp) {
    std::string t_FilePath = m_cutPath;
    if (t_FilePath.back() != '/') {
@@ -80,8 +80,8 @@
    return t_FilePath;
}
void RtspCaptureElement::SaveVideo(const std::string &strImageName)
{
void RtspCaptureElement::SaveVideo(const std::string &strImageName) {
    INFO("SaveVideo: "<<strImageName);
    std::string strTimeStamp= AppUtil::getTimeUSecString();
    std::string strPath=MakeDir(strTimeStamp);
@@ -89,8 +89,7 @@
}
void RtspCaptureElement::openVideo()
{
void RtspCaptureElement::openVideo() {
    if(m_gpuIndex>=0){
        setenv("CUDA_VISIBLE_DEVICES", std::to_string(m_gpuIndex).c_str(),0);
    }
@@ -98,22 +97,19 @@
    m_capture->open(m_path.c_str(),m_gpuIndex>=0);
}
void RtspCaptureElement::threadInitial()
{
void RtspCaptureElement::threadInitial() {
    INFO("MYH DEBUG");
    openVideo();
}
void RtspCaptureElement::threadClosing()
{
void RtspCaptureElement::threadClosing() {
    INFO("MYH DEBUG");
    m_capture->close();
    delete m_capture;
    m_capture = nullptr;
}
void RtspCaptureElement::SetVideoMinMaxSeconds(const int minSeconds, const int maxSeconds)
{
void RtspCaptureElement::SetVideoMinMaxSeconds(const int minSeconds, const int maxSeconds) {
    m_capture->SetMinMaxVideoSeconds(minSeconds,maxSeconds);
}
QiaoJiaSystem/YoloServer/ImageDrawElement.cpp
@@ -6,8 +6,8 @@
}
void ImageDrawElement::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);
    cv::putText(image, key + ": " + value, cv::Point(x, y), cv::HersheyFonts::FONT_HERSHEY_PLAIN, 4,
                cv::Scalar(200, 120, 200), 3);
}
void ImageDrawElement::processImage(cv::Mat &image) {
QiaoJiaSystem/YoloServer/YoloDetectClientTest.cpp
@@ -11,10 +11,11 @@
#include "ImageDrawElement.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 *_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();
QiaoJiaSystem/YoloServer/YoloRpcElement.cpp
@@ -84,9 +84,9 @@
            if (trackingTrigger->triggerOnce(scoredRect)) {
                trackingTrigger->getLastRect().properties["id"] = to_string(scoredRect.id);
                trackingTrigger->getLastRect().properties["type"] = cocoData[obj.type];
                trackingTrigger->getLastRect().properties["score"] = to_string(scoredRect.score);
                auto t_image = image(scoredRect.rect & cv::Rect(0, 0, image.cols, image.rows)).clone();
                triggerMats.push_back(t_image);
            }
        }
        trackingTrigger->triggerLine();