MRPT  2.0.2
List of all members | Classes | Public Types | Public Member Functions | Static Public Member Functions | Protected Attributes
mrpt::hwdrivers::CImageGrabber_dc1394 Class Reference

Detailed Description

A class for grabing images from a IEEE1394 (Firewire) camera using the libdc1394-2 library.

See the constructor for the options when opening the camera. Notice that you may have to carefully set the resolution, framerate and color_mode. See the verbose parameter of the constructor, which can display a list of supported modes in your camera.

This class is able to manage any Firewire cameras, including Stereo or multi-cameras in general, so this can be used to open the Bumblebee camera (not tested yet).

A static method (CImageGrabber_dc1394::enumerateCameras) is provided to enumerate all existing cameras and their properties. It can be used to find the GUID of the desired camera, then open it at the constructor.

Note
This class requires MRPT compiled with "libdc1394-2" (Only works under Linux for now) and "opencv".
In Linux you may need to execute "chmod 666 /dev/video1394/ * " and "chmod 666 /dev/raw1394" for allowing any user R/W access to firewire cameras.
[New in MRPT 1.3.0] Length of ring buffer is now configurable via TCaptureOptions_dc1394::ring_buffer_size
See also
The most generic camera grabber in MRPT: mrpt::hwdrivers::CCameraSensor

Definition at line 125 of file CImageGrabber_dc1394.h.

#include <mrpt/hwdrivers/CImageGrabber_dc1394.h>

Classes

struct  TCameraInfo
 Used in enumerateCameras. More...
 

Public Types

using TCameraInfoList = std::list< TCameraInfo >
 

Public Member Functions

 CImageGrabber_dc1394 (uint64_t cameraGUID=0, uint16_t cameraUnit=0, const TCaptureOptions_dc1394 &options=TCaptureOptions_dc1394(), bool verbose=false)
 Constructor: open an ieee1394 camera. More...
 
virtual ~CImageGrabber_dc1394 ()
 Destructor. More...
 
bool isOpen () const
 Check whether the camera has been open successfully. More...
 
bool changeCaptureOptions (const TCaptureOptions_dc1394 &options)
 Changes the capture properties (brightness, gain, shutter, etc) The frame size, framerate, and color_coding fields in options are ignored since they can be only set at construction time. More...
 
bool getObservation (mrpt::obs::CObservationImage &out_observation)
 Grab an image from the opened camera (for monocular cameras). More...
 
bool getObservation (mrpt::obs::CObservationStereoImages &out_observation)
 Grab an image from the opened camera (for stereo cameras). More...
 
bool setSoftwareTriggerLevel (bool level)
 Changes the boolean level associated to Software Trigger (ON/OFF) Can be used to control camera triggering trough software. More...
 

Static Public Member Functions

static void enumerateCameras (TCameraInfoList &out_list)
 Generates a list with the information on all the existing (Firewire) cameras in the system. More...
 

Protected Attributes

bool m_bInitialized {false}
 Set to false if we could not initialize the camera. More...
 
void * m_dc1394_lib_context {nullptr}
 Internal use: More...
 
void * m_dc1394camera {nullptr}
 
int m_desired_mode
 
TCaptureOptions_dc1394 m_options
 

Member Typedef Documentation

◆ TCameraInfoList

Definition at line 221 of file CImageGrabber_dc1394.h.

Constructor & Destructor Documentation

◆ CImageGrabber_dc1394()

CImageGrabber_dc1394::CImageGrabber_dc1394 ( uint64_t  cameraGUID = 0,
uint16_t  cameraUnit = 0,
const TCaptureOptions_dc1394 options = TCaptureOptions_dc1394(),
bool  verbose = false 
)

Constructor: open an ieee1394 camera.

Parameters
cameraGUIDSet the camera GUID to open, or 0 to open the first found camera.
cameraUnit(Ignored if cameraGUID=0). The number of camera to open within the device with the given GUID: In a stereo camera this may be 0 or 1. Normally this is 0.
optionsCapture options, defined in mrpt::hwdrivers::TCaptureOptions_dc1394.
verboseDisplays a lot of information about the camera to be open and its valid video modes.

Definition at line 33 of file CImageGrabber_dc1394.cpp.

References ASSERT_, changeCaptureOptions(), mrpt::hwdrivers::TCaptureOptions_dc1394::color_coding, mrpt::format(), mrpt::hwdrivers::TCaptureOptions_dc1394::frame_height, mrpt::hwdrivers::TCaptureOptions_dc1394::frame_width, mrpt::hwdrivers::TCaptureOptions_dc1394::framerate, mrpt::hwdrivers::FRAMERATE_120, mrpt::hwdrivers::FRAMERATE_15, mrpt::hwdrivers::FRAMERATE_1_875, mrpt::hwdrivers::FRAMERATE_240, mrpt::hwdrivers::FRAMERATE_30, mrpt::hwdrivers::FRAMERATE_3_75, mrpt::hwdrivers::FRAMERATE_60, mrpt::hwdrivers::FRAMERATE_7_5, m_bInitialized, m_dc1394_lib_context, m_dc1394camera, m_desired_mode, m_options, mrpt::hwdrivers::TCaptureOptions_dc1394::mode7, MRPT_END, MRPT_START, mrpt::hwdrivers::TCaptureOptions_dc1394::ring_buffer_size, THE_CAMERA, THE_CONTEXT, THROW_EXCEPTION, mrpt::hwdrivers::TCaptureOptions_dc1394::trigger_power, and verbose.

Here is the call graph for this function:

◆ ~CImageGrabber_dc1394()

CImageGrabber_dc1394::~CImageGrabber_dc1394 ( )
virtual

Destructor.

Definition at line 460 of file CImageGrabber_dc1394.cpp.

References m_bInitialized, THE_CAMERA, and THE_CONTEXT.

Member Function Documentation

◆ changeCaptureOptions()

bool CImageGrabber_dc1394::changeCaptureOptions ( const TCaptureOptions_dc1394 options)

Changes the capture properties (brightness, gain, shutter, etc) The frame size, framerate, and color_coding fields in options are ignored since they can be only set at construction time.

Returns
false on error

Definition at line 689 of file CImageGrabber_dc1394.cpp.

References m_bInitialized, MRPT_END, MRPT_START, and THROW_EXCEPTION.

Referenced by CImageGrabber_dc1394().

Here is the caller graph for this function:

◆ enumerateCameras()

void CImageGrabber_dc1394::enumerateCameras ( TCameraInfoList out_list)
static

Generates a list with the information on all the existing (Firewire) cameras in the system.

Exceptions
std::runtime_errorOn any error calling libdc1394.

Definition at line 775 of file CImageGrabber_dc1394.cpp.

References mrpt::hwdrivers::CImageGrabber_dc1394::TCameraInfo::advanced_features_csr, mrpt::hwdrivers::CImageGrabber_dc1394::TCameraInfo::bmode_capable, mrpt::hwdrivers::CImageGrabber_dc1394::TCameraInfo::can_switch_on_off, mrpt::hwdrivers::CImageGrabber_dc1394::TCameraInfo::command_registers_base, mrpt::format(), mrpt::hwdrivers::CImageGrabber_dc1394::TCameraInfo::format7_csr, mrpt::hwdrivers::CImageGrabber_dc1394::TCameraInfo::guid, mrpt::hwdrivers::CImageGrabber_dc1394::TCameraInfo::has_feature_error_status, mrpt::hwdrivers::CImageGrabber_dc1394::TCameraInfo::has_vmode_error_status, mrpt::hwdrivers::CImageGrabber_dc1394::TCameraInfo::iidc_version, mrpt::hwdrivers::CImageGrabber_dc1394::TCameraInfo::max_mem_channel, mrpt::hwdrivers::CImageGrabber_dc1394::TCameraInfo::model, mrpt::hwdrivers::CImageGrabber_dc1394::TCameraInfo::model_id, MRPT_END, MRPT_START, mrpt::hwdrivers::CImageGrabber_dc1394::TCameraInfo::multi_shot_capable, mrpt::hwdrivers::CImageGrabber_dc1394::TCameraInfo::one_shot_capable, mrpt::hwdrivers::CImageGrabber_dc1394::TCameraInfo::PIO_control_csr, mrpt::hwdrivers::CImageGrabber_dc1394::TCameraInfo::SIO_control_csr, mrpt::hwdrivers::CImageGrabber_dc1394::TCameraInfo::strobe_control_csr, THROW_EXCEPTION, THROW_STACKED_EXCEPTION, mrpt::hwdrivers::CImageGrabber_dc1394::TCameraInfo::unit, mrpt::hwdrivers::CImageGrabber_dc1394::TCameraInfo::unit_dependent_directory, mrpt::hwdrivers::CImageGrabber_dc1394::TCameraInfo::unit_directory, mrpt::hwdrivers::CImageGrabber_dc1394::TCameraInfo::unit_spec_ID, mrpt::hwdrivers::CImageGrabber_dc1394::TCameraInfo::unit_sub_sw_version, mrpt::hwdrivers::CImageGrabber_dc1394::TCameraInfo::unit_sw_version, mrpt::hwdrivers::CImageGrabber_dc1394::TCameraInfo::vendor, and mrpt::hwdrivers::CImageGrabber_dc1394::TCameraInfo::vendor_id.

Here is the call graph for this function:

◆ getObservation() [1/2]

bool CImageGrabber_dc1394::getObservation ( mrpt::obs::CObservationImage out_observation)

Grab an image from the opened camera (for monocular cameras).

Parameters
out_observationThe object to be filled with sensed data.
Note
This may be blocking when using software trigger and no frame is available yet. Ensure trigger before getObservation() or take into account that this call may block.
Returns
false on any error, true if all go fine.

Definition at line 490 of file CImageGrabber_dc1394.cpp.

References mrpt::hwdrivers::TCaptureOptions_dc1394::deinterlace_stereo, mrpt::obs::CObservationImage::image, mrpt::img::CImage::loadFromMemoryBuffer(), m_bInitialized, m_options, MRPT_END, MRPT_START, mrpt::system::now(), THE_CAMERA, THROW_EXCEPTION, and mrpt::obs::CObservation::timestamp.

Referenced by mrpt::hwdrivers::CStereoGrabber_Bumblebee_libdc1394::getStereoObservation().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ getObservation() [2/2]

bool CImageGrabber_dc1394::getObservation ( mrpt::obs::CObservationStereoImages out_observation)

Grab an image from the opened camera (for stereo cameras).

Parameters
out_observationThe object to be filled with sensed data.
Returns
false on any error, true if all go fine.

Definition at line 606 of file CImageGrabber_dc1394.cpp.

References mrpt::hwdrivers::TCaptureOptions_dc1394::deinterlace_stereo, mrpt::obs::CObservationStereoImages::imageLeft, mrpt::obs::CObservationStereoImages::imageRight, mrpt::img::CImage::loadFromMemoryBuffer(), m_bInitialized, m_options, MRPT_END, MRPT_START, mrpt::system::now(), THE_CAMERA, THROW_EXCEPTION, and mrpt::obs::CObservation::timestamp.

Here is the call graph for this function:

◆ isOpen()

bool mrpt::hwdrivers::CImageGrabber_dc1394::isOpen ( ) const
inline

Check whether the camera has been open successfully.

Definition at line 161 of file CImageGrabber_dc1394.h.

References m_bInitialized.

Referenced by mrpt::hwdrivers::CStereoGrabber_Bumblebee_libdc1394::CStereoGrabber_Bumblebee_libdc1394(), and mrpt::hwdrivers::CStereoGrabber_Bumblebee_libdc1394::getStereoObservation().

Here is the caller graph for this function:

◆ setSoftwareTriggerLevel()

bool CImageGrabber_dc1394::setSoftwareTriggerLevel ( bool  level)

Changes the boolean level associated to Software Trigger (ON/OFF) Can be used to control camera triggering trough software.

Returns
false on error

Definition at line 750 of file CImageGrabber_dc1394.cpp.

References m_bInitialized, MRPT_END, MRPT_START, THE_CAMERA, and THROW_EXCEPTION.

Member Data Documentation

◆ m_bInitialized

bool mrpt::hwdrivers::CImageGrabber_dc1394::m_bInitialized {false}
protected

Set to false if we could not initialize the camera.

Definition at line 130 of file CImageGrabber_dc1394.h.

Referenced by changeCaptureOptions(), CImageGrabber_dc1394(), getObservation(), isOpen(), setSoftwareTriggerLevel(), and ~CImageGrabber_dc1394().

◆ m_dc1394_lib_context

void* mrpt::hwdrivers::CImageGrabber_dc1394::m_dc1394_lib_context {nullptr}
protected

Internal use:

Definition at line 133 of file CImageGrabber_dc1394.h.

Referenced by CImageGrabber_dc1394().

◆ m_dc1394camera

void* mrpt::hwdrivers::CImageGrabber_dc1394::m_dc1394camera {nullptr}
protected

Definition at line 134 of file CImageGrabber_dc1394.h.

Referenced by CImageGrabber_dc1394().

◆ m_desired_mode

int mrpt::hwdrivers::CImageGrabber_dc1394::m_desired_mode
protected

Definition at line 135 of file CImageGrabber_dc1394.h.

Referenced by CImageGrabber_dc1394().

◆ m_options

TCaptureOptions_dc1394 mrpt::hwdrivers::CImageGrabber_dc1394::m_options
protected

Definition at line 137 of file CImageGrabber_dc1394.h.

Referenced by CImageGrabber_dc1394(), and getObservation().




Page generated by Doxygen 1.8.14 for MRPT 2.0.2 Git: 9b4fd2465 Mon May 4 16:59:08 2020 +0200 at lun may 4 17:26:07 CEST 2020