日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

【Adaboost算法】C++转C, 分类器结构设计

發布時間:2024/4/14 c/c++ 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Adaboost算法】C++转C, 分类器结构设计 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、參考OpenCV的CascadeClassifier類LBPEvaluator類

如下,篩選出存放分類器相關信息的成員變量:

class CV_EXPORTS_W CascadeClassifier { public:CV_WRAP CascadeClassifier();CV_WRAP CascadeClassifier( const string& filename );virtual ~CascadeClassifier();CV_WRAP virtual bool empty() const;CV_WRAP bool load( const string& filename );virtual bool read( const FileNode& node );CV_WRAP virtual void detectMultiScale( const Mat& image,CV_OUT vector<Rect>& objects,double scaleFactor=1.1,int minNeighbors=3, int flags=0,Size minSize=Size(),Size maxSize=Size() );CV_WRAP virtual void detectMultiScale( const Mat& image,CV_OUT vector<Rect>& objects,vector<int>& rejectLevels,vector<double>& levelWeights,double scaleFactor=1.1,int minNeighbors=3, int flags=0,Size minSize=Size(),Size maxSize=Size(),bool outputRejectLevels=false );bool isOldFormatCascade() const;virtual Size getOriginalWindowSize() const;int getFeatureType() const;bool setImage( const Mat& );protected://virtual bool detectSingleScale( const Mat& image, int stripCount, Size processingRectSize,// int stripSize, int yStep, double factor, vector<Rect>& candidates );virtual bool detectSingleScale( const Mat& image, int stripCount, Size processingRectSize,int stripSize, int yStep, double factor, vector<Rect>& candidates,vector<int>& rejectLevels, vector<double>& levelWeights, bool outputRejectLevels=false);protected:enum { BOOST = 0 };enum { DO_CANNY_PRUNING = 1, SCALE_IMAGE = 2,FIND_BIGGEST_OBJECT = 4, DO_ROUGH_SEARCH = 8 };friend class CascadeClassifierInvoker;template<class FEval>friend int predictOrdered( CascadeClassifier& cascade, Ptr<FeatureEvaluator> &featureEvaluator, double& weight);template<class FEval>friend int predictCategorical( CascadeClassifier& cascade, Ptr<FeatureEvaluator> &featureEvaluator, double& weight);template<class FEval>friend int predictOrderedStump( CascadeClassifier& cascade, Ptr<FeatureEvaluator> &featureEvaluator, double& weight);template<class FEval>friend int predictCategoricalStump( CascadeClassifier& cascade, Ptr<FeatureEvaluator> &featureEvaluator, double& weight);bool setImage( Ptr<FeatureEvaluator>& feval, const Mat& image);virtual int runAt( Ptr<FeatureEvaluator>& feval, Point pt, double& weight );class Data{public:struct CV_EXPORTS DTreeNode{int featureIdx;float threshold; // for ordered features onlyint left;int right;};struct CV_EXPORTS DTree{int nodeCount;};struct CV_EXPORTS Stage{int first;int ntrees;float threshold;};bool read(const FileNode &node);bool isStumpBased;int stageType;int featureType;int ncategories;Size origWinSize;vector<Stage> stages;vector<DTree> classifiers;vector<DTreeNode> nodes;vector<float> leaves;vector<int> subsets;};Data data;Ptr<FeatureEvaluator> featureEvaluator;Ptr<CvHaarClassifierCascade> oldCascade;public:class CV_EXPORTS MaskGenerator{public:virtual ~MaskGenerator() {}virtual cv::Mat generateMask(const cv::Mat& src)=0;virtual void initializeMask(const cv::Mat& /*src*/) {};};void setMaskGenerator(Ptr<MaskGenerator> maskGenerator);Ptr<MaskGenerator> getMaskGenerator();void setFaceDetectionMaskGenerator();protected:Ptr<MaskGenerator> maskGenerator; };class LBPEvaluator : public FeatureEvaluator { public:struct Feature{Feature();Feature( int x, int y, int _block_w, int _block_h ) :rect(x, y, _block_w, _block_h) {}int calc( int offset ) const;void updatePtrs( const Mat& sum );bool read(const FileNode& node ); Rect rect; // weight and height for blockconst int* p[16]; // fast };LBPEvaluator();virtual ~LBPEvaluator();virtual bool read( const FileNode& node );virtual Ptr<FeatureEvaluator> clone() const;virtual int getFeatureType() const { return FeatureEvaluator::LBP; }virtual bool setImage(const Mat& image, Size _origWinSize);virtual bool setWindow(Point pt);int operator()(int featureIdx) const{ return featuresPtr[featureIdx].calc(offset); }virtual int calcCat(int featureIdx) const{ return (*this)(featureIdx); } protected:Size origWinSize;Ptr<vector<Feature> > features;Feature* featuresPtr; // optimization Mat sum0, sum;Rect normrect;int offset; };

二、開始設計適合自己分類器的數據結構

如下圖,因為我們打算使用數組方式存儲信息,為避免溢出,首先了解自己分類器的強分類器級數,nodes,leaves等信息,由于我們的分類器是通過opencv訓練的,所以可以直接Debug查看分類器信息,或者通過xml文件查看。

設計結構體如下:

#ifndef _CP_ADABOOST_ #define _CP_ADABOOST_ #ifdef __cplusplus extern "C"{ #endif typedef struct tagCpSize {int iWidth;int iHeight; }CP_SIZE_S;typedef struct tagCPDTreeNode {int featureIdx;float threshold; // for ordered features onlyint left;int right; }CP_DTREE_NODE_S;typedef struct tagCpDTree {int nodeCount; }CP_DTREE_S;typedef struct tagCpStage {int first;int ntrees;float threshold; }CP_STAGE_S;typedef struct tagCPRect {int x;int y;int width;int height; }CP_RECT_S;typedef struct tagLBPFeature {CP_RECT_S rect;/*特征位置*/int* p[16];/* 特征在積分圖中的地址 */ }CP_LBP_FEATURE_S;typedef struct tagCpClassifier {bool isStumpBased;int stageType;int featureType;int ncategories;CP_SIZE_S origWinSize;CP_STAGE_S stages[50]; /*強分類器級數*/int stagerNum;
CP_DTREE_S classifiers[
500];
int classfierNum;CP_DTREE_NODE_S nodes[
500];
int nodeNum;CP_LBP_FEATURE_S feature[
500];
int featureNum;
float leaves[1000];
int leaveNum;
int subsets[5000];
int subsetNum; }CP_CLASSIFIER_S;#ifdef __cplusplus }
#endif #endif /* _CP_ADABOOST_ */

轉載于:https://www.cnblogs.com/chenpi/p/5128229.html

總結

以上是生活随笔為你收集整理的【Adaboost算法】C++转C, 分类器结构设计的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 嫩草在线播放 | 国产99在线 | 亚洲 | 黄色av一区二区 | 日韩免费av一区 | 久久久亚洲一区二区三区 | 欧美午夜视频 | 蜜臀久久99精品久久一区二区 | 国产精品国产三级国产a | 欧美成人一区二区三区片免费 | 天天操天天操天天操天天操天天操 | 国产一级片免费观看 | 7788色淫网站小说 | 美国三级a三级18 | 2021中文字幕| 伊人久久一区二区三区 | 久草资源网 | 日韩av三级在线 | 欧美成人午夜免费视在线看片 | 日韩第八页 | 亚洲一区精品在线观看 | 午夜影院一区二区三区 | 婷婷色婷婷开心五月四房播播 | 国产性xxxx高清 | 秋霞欧美一区二区三区视频免费 | 久久久噜噜噜久久中文字幕色伊伊 | 亚洲伊人天堂 | 91日韩在线视频 | 18我禁在线观看 | 日韩在线观看视频网站 | 国产成人77亚洲精品www | 亚洲精品久久久久久一区二区 | 人妻与黑人一区二区三区 | 国产精品亲子伦对白 | 综合久久中文字幕 | 成人一级网站 | 久久韩日 | 色噜噜狠狠一区二区 | 干干干日日日 | www.四虎在线观看 | 老色批永久免费网站www | 欧美3p视频 | 亚洲成av人片在线观看无码 | 日韩福利电影在线观看 | 日韩国产成人无码av毛片 | 播放毛片| 中国女人高潮hd | 国产美女视频一区 | 黄色片日韩 | 男人av网| 欧美日韩大片 | 18成人免费观看网站下载 | 亚洲午夜色 | 男人的天堂视频网站 | 91尤物国产福利在线观看 | 天天躁夜夜躁狠狠躁 | 天堂中文在线视频 | 操比网站 | 国产精品久久免费视频 | 中日韩精品视频在线观看 | 日韩精品一区在线观看 | 我的公把我弄高潮了视频 | 欧美第一页草草影院 | 操你啦免费视频 | 成人精品福利 | 亚洲最大中文字幕 | 大陆av在线| 老外一级片| 脱美女衣服亲摸揉视频 | 亚洲日本黄色 | 激情六月天 | 久久天天操 | 国产精品久线在线观看 | 色综合a| 亚洲国产精品av | 美女高潮黄又色高清视频免费 | 色.com | 在线看片你懂 | 福利视频一区二区 | 色综合99| 国产成人精 | 无码人妻aⅴ一区二区三区69岛 | 女生高潮视频在线观看 | 成人免费91 | 拍摄av现场失控高潮数次 | 亚洲综合激情另类小说区 | 情不自禁电影 | 日韩亚洲精品视频 | 黄色网址进入 | 国产精品久久久久久久免费观看 | 把高贵美妇调教成玩物 | 欧美一区二区三区在线免费观看 | 日本成人精品 | 侵犯亲女在线播放视频 | 日日拍拍| 日本性高潮视频 | 天堂在线中文字幕 | 亚洲区视频在线观看 | 日本理论视频 | 男男做爰猛烈叫床爽爽小说 |