zl程序教程

您现在的位置是:首页 >  后端

当前栏目

c++ Opencv物体检测封装(级联训练分类器方式检测)

OpencvC++封装训练 方式 检测 物体 级联
2023-09-14 09:07:10 时间
class Cascade
{
public:
    Cascade()
    {

    }
    bool load_cascade()
    {
        return cascade.load(m_cascadexml);
    }
    void setCascade(string cascade)
    {
        m_cascadexml=cascade;
    }
    string getCascade()
    {
        return m_cascadexml;
    }
    void detect(cv::Mat &frame)
    {
        std::vector<Rect> obj;
        Mat frame_gray;
        cvtColor(frame, frame_gray, COLOR_BGR2GRAY);
        equalizeHist(frame_gray, frame_gray);
        //-- Detect objects
        cascade.detectMultiScale(frame_gray, obj, 1.1, 3, CV_HAAR_DO_ROUGH_SEARCH, Size(70, 70),Size(100,100));
        for (size_t i = 0; i < obj.size(); i++)
        {
            rectangle(frame, obj[i],Scalar(255,0,0),2,8,0);
        }
    }
    cv::Mat getdetectFrame()
    {
        return m_frame;
    }
private:
    CascadeClassifier cascade;
    std::string m_cascadexml="";
    cv::Mat m_frame;
};