• 大小: 1.72MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-08-31
  • 语言: 其他
  • 标签: ACF  行人检测  opencv  

资源简介

基于聚合通道特征ACF的行人检测代码,代码使用opencv和vs开发,能够实现对图片中行人的检测,检测还可以,适合于对ACF特征的学习

资源截图

代码片段和文件信息

#include “stdafx.h“
#include “ACFDetector.h“
#include “imResample.h“
#include 

#include 

enum ConvolutionType {
  CONVOLUTION_FULL
  CONVOLUTION_SAME
  CONVOLUTION_VALID
};

void conv2(const cv::Mat &A const cv::Mat &B ConvolutionType type cv::Mat &dst) {
  cv::Mat src = A kernel;
  cv::flip(B kernel -1);
  if (type == CONVOLUTION_FULL) {
    src = cv::Mat();
    const int ar = kernel.rows - 1 ac = kernel.cols - 1;
    cv::copyMakeBorder(A src (ar + 1) / 2 ar / 2 (ac + 1) / 2 ac / 2 cv::BORDER_CONSTANT cv::Scalar(0));
  }
  cv::Point anchor(kernel.cols - kernel.cols / 2 - 1 kernel.rows - kernel.rows / 2 - 1);
  int borderMode = cv::BORDER_CONSTANT;
  cv::filter2D(src dst src.depth() kernel anchor 0 borderMode);
  if (type == CONVOLUTION_VALID) {
    dst = dst.colRange((kernel.cols - 1) / 2 dst.cols - kernel.cols / 2)
             .rowRange((kernel.rows - 1) / 2 dst.rows - kernel.rows / 2);
  }
}

ACFDetector::ACFDetector():clf() pPyramid() filters() {

}

void ACFDetector::loadModel(const std::string &filepath) {
  FILE *fp = fopen(filepath.c_str() “rb“);
  if (fp == NULL) {
    wrError(“cannot open model“);
  }
  // get pPyramid
  // TODO: WARNING!! hard code for chnsInput
  fread(&pPyramid.chnsInput.shrink sizeof(int) 1 fp);
  pPyramid.chnsInput.pColor.enabled = true;
  fread(&pPyramid.chnsInput.pColor.smooth sizeof(float) 1 fp);
  pPyramid.chnsInput.pColor.colorSpace = CS_LUV;

  pPyramid.chnsInput.pGradMag.enabled = true;
  fread(&pPyramid.chnsInput.pGradMag.colorChannel sizeof(int) 1 fp);
  fread(&pPyramid.chnsInput.pGradMag.normRad sizeof(float) 1 fp);
  fread(&pPyramid.chnsInput.pGradMag.normConst sizeof(float) 1 fp);
  fread(&pPyramid.chnsInput.pGradMag.full sizeof(bool) 1 fp);

  pPyramid.chnsInput.pGradHist.enabled = true;
  pPyramid.chnsInput.pGradHist.binSize = pPyramid.chnsInput.shrink;
  fread(&pPyramid.chnsInput.pGradHist.nOrients sizeof(int) 1 fp);
  fread(&pPyramid.chnsInput.pGradHist.softBin sizeof(bool) 1 fp);
  fread(&pPyramid.chnsInput.pGradHist.useHog sizeof(bool) 1 fp);
  fread(&pPyramid.chnsInput.pGradHist.clipHog sizeof(float) 1 fp);

  pPyramid.chnsInput.complete = true;

  fread(&pPyramid.nPerOct sizeof(int) 1 fp);
  fread(&pPyramid.nOctUp sizeof(int) 1 fp);
  fread(&pPyramid.nApprox sizeof(int) 1 fp);
  uint32_t nTypes; fread(&nTypes sizeof(uint32_t) 1 fp);
  pPyramid.lambdas.resize(nTypes);
  for (size_t i = 0; i < nTypes; ++i) {
    fread(&pPyramid.lambdas[i] sizeof(float) 1 fp);
  }
  fread(pPyramid.pad sizeof(int) 2 fp);
  fread(pPyramid.minDs sizeof(float) 2 fp);
  fread(&pPyramid.smooth sizeof(float) 1 fp);
  fread(&pPyramid.complete sizeof(bool) 1 fp);
  if (pPyramid.nApprox < 0) pPyramid.nApprox = pPyramid.nPerOct - 1;

  // get filters
  uint32_t rows cols channels;
  fread(&rows sizeof(uint32_t) 1 fp);
  fread(&cols sizeof(uint32_t) 1 fp);
  fread(&channels sizeof(uint32_t) 1 fp);
  f

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2018-01-30 08:25  ACFTest-master\
     文件          57  2018-01-30 08:25  ACFTest-master\.gitignore
     文件        1293  2018-01-30 08:25  ACFTest-master\ACFTest.sln
     文件       30208  2018-01-30 08:25  ACFTest-master\ACFTest.v12.suo
     目录           0  2018-01-30 08:25  ACFTest-master\ACFTest\
     文件        8558  2018-01-30 08:25  ACFTest-master\ACFTest\ACFDetector.cpp
     文件        2461  2018-01-30 08:25  ACFTest-master\ACFTest\ACFDetector.h
     文件        1514  2018-01-30 08:25  ACFTest-master\ACFTest\ACFTest.cpp
     文件        9329  2018-01-30 08:25  ACFTest-master\ACFTest\ACFTest.vcxproj
     文件        4511  2018-01-30 08:25  ACFTest-master\ACFTest\ACFTest.vcxproj.filters
     文件        1575  2018-01-30 08:25  ACFTest-master\ACFTest\CMakeLists.txt
     文件        3045  2018-01-30 08:25  ACFTest-master\ACFTest\CellArray.cpp
     文件        2424  2018-01-30 08:25  ACFTest-master\ACFTest\CellArray.h
     文件       15487  2018-01-30 08:25  ACFTest-master\ACFTest\EdgeBoxes.cpp
     文件        2764  2018-01-30 08:25  ACFTest-master\ACFTest\EdgeBoxes.h
     文件       10494  2018-01-30 08:25  ACFTest-master\ACFTest\EdgeDetector.cpp
     文件        3096  2018-01-30 08:25  ACFTest-master\ACFTest\EdgeDetector.h
     文件        1675  2018-01-30 08:25  ACFTest-master\ACFTest\ReadMe.txt
     文件        2350  2018-01-30 08:25  ACFTest-master\ACFTest\bbNms.cpp
     文件        1064  2018-01-30 08:25  ACFTest-master\ACFTest\bbNms.h
     文件        2965  2018-01-30 08:25  ACFTest-master\ACFTest\box.cpp
     文件        3260  2018-01-30 08:25  ACFTest-master\ACFTest\box.h
     文件        2102  2018-01-30 08:25  ACFTest-master\ACFTest\chnsCompute.cpp
     文件        2379  2018-01-30 08:25  ACFTest-master\ACFTest\chnsCompute.h
     文件        5884  2018-01-30 08:25  ACFTest-master\ACFTest\chnsPyramid.cpp
     文件        2096  2018-01-30 08:25  ACFTest-master\ACFTest\chnsPyramid.h
     文件       10358  2018-01-30 08:25  ACFTest-master\ACFTest\convConstMex.h
     文件         718  2018-01-30 08:25  ACFTest-master\ACFTest\convUtil.cpp
     文件        2336  2018-01-30 08:25  ACFTest-master\ACFTest\convUtil.h
     文件         545  2018-01-30 08:25  ACFTest-master\ACFTest\global.h
     文件       18946  2018-01-30 08:25  ACFTest-master\ACFTest\gradientMex.h
............此处省略25个文件信息

评论

共有 条评论