Пример #1
0
    PeopleDetector(ros::NodeHandle& nh, std::string& model_file, std::string& rgb_camera_topic, std::string& depth_camera_topic, std::string& tracker_frame) : nh_(nh), it_(nh)
    {
        tracker_frame_ = tracker_frame;
        resource_retriever::Retriever retver;
        resource_retriever::MemoryResource resource;
        try
        {
            resource = retver.get("package://people_identifier/data/" + model_file);
        }
        catch (resource_retriever::Exception& e)
        {
            printf("Resource retriever failed to find the file!\n");
        }
        FILE * tempfile = fopen("tmp_model.xml", "w");
        fwrite(resource.data.get(), resource.size, 1, tempfile);
        fclose(tempfile);
        detector = cvLoadLatentSvmDetector("tmp_model.xml");
        if (!detector)
        {
            printf("Unable to load the model file?!\n");
            fflush(stdout);
            exit(1);
        }

        iscalibrated = 0;
        tracking_pub_ = nh_.advertise<person_tracker::TrackerState>("tracker_state", 100);
        image_sub_ = it_.subscribe(rgb_camera_topic, 1, &PeopleDetector::imageCb, this);
        depth_sub_ = it_.subscribe(depth_camera_topic, 1, &PeopleDetector::depthCb, this);
        cv::namedWindow(COLORWINDOW);
        ROS_INFO("Startup complete");
    }
Пример #2
0
bool LatentSvmDetector::load( const std::vector<String>& filenames, const std::vector<String>& _classNames )
{
    clear();

    CV_Assert( _classNames.empty() || _classNames.size() == filenames.size() );

    for( size_t i = 0; i < filenames.size(); i++ )
    {
        const String filename = filenames[i];
        if( filename.length() < 5 || filename.substr(filename.length()-4, 4) != ".xml" )
            continue;

        CvLatentSvmDetector* detector = cvLoadLatentSvmDetector( filename.c_str() );
        if( detector )
        {
            detectors.push_back( detector );
            if( _classNames.empty() )
            {
                classNames.push_back( extractModelName(filenames[i]) );
            }
            else
                classNames.push_back( _classNames[i] );
        }
    }

    return !empty();
}