Пример #1
0
    Image * USBCamera::takeImage()
    {
        // Update camera, call executor's functor.
        tryToUpdateCapture();

        // Take image
        try
        {
            // Delay camera for some time..
            usleep(m_delay*1000);

            // Get image from camera
            Image * image = new Image();

            pthread_mutex_lock(&m_lock);
            m_camera->grab();
            m_camera->retrieve(image->getImage());
            pthread_mutex_unlock(&m_lock);

            // Check if need to rotate the image
            image->rotate(m_angle);

            return image;
        }
        catch(cv::Exception & ex)
        {
            pthread_mutex_unlock(&m_lock);
            throw OpenCVException(ex.msg.c_str());
        }
    }
Пример #2
0
 Image * USBCamera::takeImage()
 {
     // Update camera, call executor's functor.
     tryToUpdateCapture();
     
     // Take image
     try
     {
         // Delay camera for some time..
         usleep(m_delay*1000);
         
         // Get image from camera
         Image * image = new Image();
         cvGrabFrame(m_camera);
         cvGrabFrame(m_camera);
         cvGrabFrame(m_camera);
         cvGrabFrame(m_camera);
         cvGrabFrame(m_camera); // workaround for buffering
         image->setImage(cvRetrieveFrame(m_camera));
         
         // Check if need to rotate the image
         image->rotate(m_angle);
         
         return image;
     }
     catch(cv::Exception & ex)
     {
         throw OpenCVException(ex.msg.c_str());
     }
 }