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