yolov3 yolo_cpp_dll 调用

1.编译

      1.1 如出现 cudnn宏问题 ,查看cudnn版本是否正确

       1.2 包含目录

..\..\3rdparty\include;C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0;C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\include;%(AdditionalIncludeDirectories);$(CudaToolkitIncludeDir);$(cudnn)\include

       1.3包含库目录

$(CUDA_PATH)lib\$(PlatformName);$(cudnn)\lib\x64;C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\lib\x64;%(AdditionalLibraryDirectories)

      1.4包含库

..\..\3rdparty\lib\x64\pthreadVC2.lib
cublas.lib
curand.lib
cudart.lib

可以发现,主要为cuda以及cudnn的依赖

2.test

#include <iostream>
#include "opencv2/core/core.hpp"
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/opencv.hpp"
#include "Yolov2Detector.h"
using namespace std;
vector<string> objName = { "person", "Saftyhelmetperson" };
const string CFG_FILE = "\\cfg\\helmet02.cfg";
const string WEIGHTS_FILE = "\\helmet02_59400.weights";
#define  ORG_PIC_WIDTH MAX_PIC_WIDTH
#define  ORG_PIC_HEIGHT MAX_PIC_HEIGHT

#define MAX_PIC_WIDTH  1920
#define MAX_PIC_HEIGHT 1080
int main()
{
    string curPath = "E:/work/yolov3test/yolov3test/";
    string cfgPath = curPath + CFG_FILE;
    string weightsPath = curPath + WEIGHTS_FILE;
    Yolov2Detector *m_pDetector = new Yolov2Detector(cfgPath, weightsPath);
    Mat img(ORG_PIC_WIDTH, ORG_PIC_HEIGHT, CV_8UC3);
    char cPath[MAX_PATH] =  "E:/work/yolov3test/yolov3test/11.jpg" ;
    img =cv::imread(cPath);
    int iDetectObjNums = 0; //报警目标个数
    float m_fProbThres = 0.25;
    int iAllObjCount = 0;  //检测到的所有目标个数
    string obj_name = "Saftyhelmetperson";//需要报警的目标,不含该目标将直接删除服务器发来的路径对应的图片
    vector <string>::iterator sElement = std::find(objName.begin(),
        objName.end(), obj_name);

    auto result = m_pDetector->Detect(img, m_fProbThres);
    result = m_pDetector->TrackingID(result);

    iAllObjCount = result.size();
    std::cout << "检测到 " << iAllObjCount << "个目标" << std::endl;


    int iPosition = distance(objName.begin(), sElement); //报警目标在vector中的position
    for (int i = 0; i < iAllObjCount; i++)
    {
        if (result.at(i).obj_id == iPosition)
        {
            iDetectObjNums += 1;
        }
    }
    m_pDetector->DrawBoxes(img, result, objName);
    cv::imshow("",img);
    cv::waitKey(0);
}

猜你喜欢

转载自blog.csdn.net/nathan1025/article/details/82429207