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()); } }
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()); } }