hog人体检测
来源:互联网 发布:第一届大数据教育论坛 编辑:程序博客网 时间:2024/04/30 13:37
opencv中的 HOGDescriptor 类
struct CV_EXPORTS_W HOGDescriptor { public: enum { L2Hys=0 }; enum { DEFAULT_NLEVELS=64 }; CV_WRAP HOGDescriptor() : winSize(64,128), blockSize(16,16), blockStride(8,8), cellSize(8,8), nbins(9), derivAperture(1), winSigma(-1), histogramNormType(HOGDescriptor::L2Hys), L2HysThreshold(0.2), gammaCorrection(true), nlevels(HOGDescriptor::DEFAULT_NLEVELS) {} CV_WRAP HOGDescriptor(Size _winSize, Size _blockSize, Size _blockStride, Size _cellSize, int _nbins, int _derivAperture=1, double _winSigma=-1, int _histogramNormType=HOGDescriptor::L2Hys, double _L2HysThreshold=0.2, bool _gammaCorrection=false, int _nlevels=HOGDescriptor::DEFAULT_NLEVELS) : winSize(_winSize), blockSize(_blockSize), blockStride(_blockStride), cellSize(_cellSize), nbins(_nbins), derivAperture(_derivAperture), winSigma(_winSigma), histogramNormType(_histogramNormType), L2HysThreshold(_L2HysThreshold), gammaCorrection(_gammaCorrection), nlevels(_nlevels) {} CV_WRAP HOGDescriptor(const String& filename) { load(filename); } HOGDescriptor(const HOGDescriptor& d) { d.copyTo(*this); } virtual ~HOGDescriptor() {} CV_WRAP size_t getDescriptorSize() const; CV_WRAP bool checkDetectorSize() const; CV_WRAP double getWinSigma() const; CV_WRAP virtual void setSVMDetector(InputArray _svmdetector); virtual bool read(FileNode& fn); virtual void write(FileStorage& fs, const String& objname) const; CV_WRAP virtual bool load(const String& filename, const String& objname=String()); CV_WRAP virtual void save(const String& filename, const String& objname=String()) const; virtual void copyTo(HOGDescriptor& c) const; CV_WRAP virtual void compute(const Mat& img, CV_OUT vector<float>& descriptors, Size winStride=Size(), Size padding=Size(), const vector<Point>& locations=vector<Point>()) const; //with found weights output CV_WRAP virtual void detect(const Mat& img, CV_OUT vector<Point>& foundLocations, CV_OUT vector<double>& weights, double hitThreshold=0, Size winStride=Size(), Size padding=Size(), const vector<Point>& searchLocations=vector<Point>()) const; //without found weights output virtual void detect(const Mat& img, CV_OUT vector<Point>& foundLocations, double hitThreshold=0, Size winStride=Size(), Size padding=Size(), const vector<Point>& searchLocations=vector<Point>()) const; //with result weights output CV_WRAP virtual void detectMultiScale(const Mat& img, CV_OUT vector<Rect>& foundLocations, CV_OUT vector<double>& foundWeights, double hitThreshold=0, Size winStride=Size(), Size padding=Size(), double scale=1.05, double finalThreshold=2.0,bool useMeanshiftGrouping = false) const; //without found weights output virtual void detectMultiScale(const Mat& img, CV_OUT vector<Rect>& foundLocations, double hitThreshold=0, Size winStride=Size(), Size padding=Size(), double scale=1.05, double finalThreshold=2.0, bool useMeanshiftGrouping = false) const; CV_WRAP virtual void computeGradient(const Mat& img, CV_OUT Mat& grad, CV_OUT Mat& angleOfs, Size paddingTL=Size(), Size paddingBR=Size()) const; CV_WRAP static vector<float> getDefaultPeopleDetector(); CV_WRAP static vector<float> getDaimlerPeopleDetector(); CV_PROP Size winSize; CV_PROP Size blockSize; CV_PROP Size blockStride; CV_PROP Size cellSize; CV_PROP int nbins; CV_PROP int derivAperture; CV_PROP double winSigma; CV_PROP int histogramNormType; CV_PROP double L2HysThreshold; CV_PROP bool gammaCorrection; CV_PROP vector<float> svmDetector; CV_PROP int nlevels; // evaluate specified ROI and return confidence value for each location void detectROI(const cv::Mat& img, const vector<cv::Point> &locations, CV_OUT std::vector<cv::Point>& foundLocations, CV_OUT std::vector<double>& confidences, double hitThreshold = 0, cv::Size winStride = Size(), cv::Size padding = Size()) const; // evaluate specified ROI and return confidence value for each location in multiple scales void detectMultiScaleROI(const cv::Mat& img, CV_OUT std::vector<cv::Rect>& foundLocations, std::vector<DetectionROI>& locations, double hitThreshold = 0, int groupThreshold = 0) const; // read/parse Dalal's alt model file void readALTModel(std::string modelfile); };
其中hog.setSVMDetector(HOGDescriptor::getDefaultPeopleDetector());得到svm的检测算子。
hog.detectMultiScale(img, found, 0, Size(8,8), Size(32,32), 1.05, 2);得到检测的结果。
人体检测代码:结果如下:vector<Rect> getBodyArea(Mat rawFrame){ vector<Rect> foundRect,foundFilteredRect; HOGDescriptor peopleDectectHog; peopleDectectHog .setSVMDetector (HOGDescriptor::getDefaultPeopleDetector());//默认人体检测器 peopleDectectHog.detectMultiScale (rawFrame ,foundRect, 0 ,Size(8,8),Size(32,32),1.05,2); size_t i,j; for(i=0;i<foundRect.size() ;i++)//下面的这个for语句是找出所有没有嵌套的矩形框r,并放入found_filtered中, {//如果有嵌套的话,则取外面最大的那个矩形框放入found_filtered中 Rect r=foundRect[i]; for(j=0;j<foundRect.size();j++) { if(j!=i&&(r&foundRect[j])==r) break ; } if(j==foundRect.size()) foundFilteredRect .push_back (r); } for(i=0;i<foundFilteredRect.size ();i++)//调整大小 { Rect r=foundFilteredRect [i]; r.x+=cvRound (r.width *0.1); r.width =cvRound(r.width *0.8); r.y+=cvRound(r.height *0.07); r.height =cvRound(r.height *0.8); rectangle (rawFrame ,r.tl(),r.br(),Scalar(0,255,0),3); } return foundFilteredRect ;}
- hog人体检测
- HOG人体检测原理详解
- 利用HOG特征进行人体检测
- HOG特征和人体检测 学习笔记
- 利用HOG特征进行人体检测
- 人体检测HOG特征 Finding People in Images and Videos
- Opencv之HOG特征与SVM相结合的人体检测
- HOG人体特征提取+SVM分类器训练进行人体检测
- HOG:用于人体检测的梯度方向直方图 Histograms of Oriented Gradients for Human Detection
- HOG:用于人体检测的梯度方向直方图 Histograms of Oriented Gradients for Human Detection
- HOG:用于人体检测的梯度方向直方图 Histograms of Oriented Gradients for Human Detection
- HOG:用于人体检测的梯度方向直方图 Histograms of Oriented Gradients for Human Detection
- HOG:用于人体检测的梯度方向直方图 Histograms of Oriented Gradients for Human Detection
- HOG:用于人体检测的梯度方向直方图 Histograms of Oriented Gradients for Human Detection
- HOG:用于人体检测的梯度方向直方图 Histograms of Oriented Gradients for Human Detection
- HOG:用于人体检测的梯度方向直方图 Histograms of Oriented Gradients for Human Detection
- HOG:用于人体检测的梯度方向直方图 Histograms of Oriented Gradients for Human Detection
- Opencv之HOG特征与SVM相结合的人体检测(增加自举法)
- [转]使用Go语言一段时间的感受
- 从boost看C++的私有继承;
- 泛型
- 利用ThreadLocal管理Hibernate Session
- 基于keepalived、redis sentinel的多实例redis集群【1】---路由以及哨兵配置
- hog人体检测
- .net托管环境下struct实例字段的内存布局(Layout)和大小(Size)
- iOS应用程序基础:Cocoa Touch框架
- Shell编程-awk
- 基于 SquashFS 构建 Linux 可读写文件系统
- C++程序为您提供全自动装软件源码
- cocos2d-x自适应android不同分辨率,使用多套资源
- 模拟账户跨服务器上传下载共享文件
- 重写c++中string类,实现基本string功能