コード例 #1
0
TrackerThread::TrackerThread(IntRect roi, CameraPtr pCamera,
        BitmapPtr ppBitmaps[NUM_TRACKER_IMAGES], MutexPtr pMutex, CQueue& cmdQ,
        IBlobTarget *pTarget, bool bSubtractHistory, TrackerConfig& config)
    : WorkerThread<TrackerThread>("Tracker", cmdQ),
      m_TouchThreshold(0),
      m_TrackThreshold(0),
      m_HistoryDelay(-1),
      m_StartTime(0),
      m_pMutex(pMutex),
      m_pCamera(pCamera),
      m_pTarget(pTarget),
      m_pTrafo(new DeDistort()),
      m_bCreateDebugImages(false),
      m_bCreateFingerImage(false),
      m_NumFrames(0),
      m_NumCamFramesDiscarded(0),
      m_pImagingContext(0)
{
    m_bTrackBrighter = config.getBoolParam("/tracker/brighterregions/@value");
    if (bSubtractHistory) {
        m_pHistoryPreProcessor = HistoryPreProcessorPtr(
                new HistoryPreProcessor(ppBitmaps[1]->getSize(), 1, 
                m_bTrackBrighter));
    }
    m_Prescale = config.getIntParam("/tracker/prescale/@value");
    setBitmaps(roi, ppBitmaps);

    DeDistortPtr pDeDistort = config.getTransform();
    m_pDistorter = FilterDistortionPtr(new FilterDistortion(
                m_pBitmaps[TRACKER_IMG_CAMERA]->getSize()/m_Prescale, pDeDistort));

    m_pConfig = TrackerConfigPtr(new TrackerConfig(config));
    m_pCamera->startCapture();
}
コード例 #2
0
bool FGIRCScrollChannel::onAdd(void)
{
   if(!Parent::onAdd())
      return false;

   setBitmaps();
   
   return true;
}
コード例 #3
0
void TrackerThread::setConfig(TrackerConfig config, IntRect roi, 
        BitmapPtr ppBitmaps[NUM_TRACKER_IMAGES])
{
    boost::mutex::scoped_lock lock(*m_pMutex);
    try {
        m_TouchThreshold = config.getIntParam("/tracker/touch/threshold/@value");
    } catch (Exception&) {
        m_TouchThreshold = 0;
    }
    m_bTrackBrighter = config.getBoolParam("/tracker/brighterregions/@value");
    try {
        m_TrackThreshold = config.getIntParam("/tracker/track/threshold/@value");
    } catch (Exception&) {
        m_TrackThreshold = 0;
    }
    m_Prescale = config.getIntParam("/tracker/prescale/@value");
    if(m_pHistoryPreProcessor) {
        m_pHistoryPreProcessor->setInterval(config.getIntParam
                ("/tracker/historyupdateinterval/@value"));
    }
    DeDistortPtr pDeDistort = config.getTransform();
    if (!(*m_pTrafo == *pDeDistort)) {
        m_pDistorter = FilterDistortionPtr(new FilterDistortion(
                m_pBitmaps[TRACKER_IMG_CAMERA]->getSize()/m_Prescale, pDeDistort));
        *m_pTrafo = *pDeDistort;
    }
    int brightness = config.getIntParam("/camera/brightness/@value");
    int exposure = config.getIntParam("/camera/exposure/@value");
    int gamma = config.getIntParam("/camera/gamma/@value");
    int gain = config.getIntParam("/camera/gain/@value");
    int shutter = config.getIntParam("/camera/shutter/@value");
    int strobeDuration = config.getIntParam("/camera/strobeduration/@value");
    string sCameraMaskFName = config.getParam("/tracker/mask/@value");
    bool bNewCameraMask = ((m_pCameraMaskBmp == BitmapPtr() && sCameraMaskFName != "") || 
            m_pConfig->getParam("/tracker/mask/@value") != sCameraMaskFName);
    if (int(m_pCamera->getFeature(CAM_FEATURE_BRIGHTNESS)) != brightness ||
             int(m_pCamera->getFeature(CAM_FEATURE_GAMMA)) != gamma ||
             int(m_pCamera->getFeature(CAM_FEATURE_EXPOSURE)) != exposure ||
             int(m_pCamera->getFeature(CAM_FEATURE_GAIN)) != gain ||
             int(m_pCamera->getFeature(CAM_FEATURE_SHUTTER)) != shutter ||
             int(m_pCamera->getFeature(CAM_FEATURE_STROBE_DURATION)) != strobeDuration ||
             bNewCameraMask)
    {
        m_pHistoryPreProcessor->reset();
    }

    m_pCamera->setFeature(CAM_FEATURE_BRIGHTNESS, brightness);
    m_pCamera->setFeature(CAM_FEATURE_GAMMA, gamma);
//    m_pCamera->setFeature(CAM_FEATURE_EXPOSURE, exposure);
    m_pCamera->setFeature(CAM_FEATURE_GAIN, gain);
    m_pCamera->setFeature(CAM_FEATURE_SHUTTER, shutter);
    m_pCamera->setFeature(CAM_FEATURE_STROBE_DURATION, strobeDuration, true);

    if (bNewCameraMask) {
        if (sCameraMaskFName == "") {
            m_pCameraMaskBmp = BitmapPtr();
        } else {
            BitmapPtr pRGBXCameraMaskBmp = loadBitmap(sCameraMaskFName, I8);
        }
    }
    m_pConfig = TrackerConfigPtr(new TrackerConfig(config));
        
    setBitmaps(roi, ppBitmaps);
    createBandpassFilter();
}