44 #include <visp/vpConfig.h>
46 #ifdef VISP_HAVE_CMU1394
50 #include <visp/vpImageIo.h>
51 #include <visp/vpImageConvert.h>
52 #include <visp/vp1394CMUGrabber.h>
66 camera =
new C1394Camera;
68 _format = _mode = _fps = -1;
95 camerror = camera->SelectCamera(index);
96 if ( camerror!= CAM_SUCCESS)
100 case CAM_ERROR_PARAM_OUT_OF_RANGE:
101 vpERROR_TRACE(
"vp1394CMUGrabber error: Found no camera number %i",index);
105 vpERROR_TRACE(
"vp1394CMUGrabber error: The camera %i is busy",index);
109 vpERROR_TRACE(
"vp1394CMUGrabber error: General I/O error when selecting camera number %i",index);
121 vp1394CMUGrabber::initCamera()
127 if (camera->CheckLink() != CAM_SUCCESS)
129 vpERROR_TRACE(
"C1394Camera error: Found no cameras on the 1394 bus");
133 camerror = camera->InitCamera();
134 if ( camerror != CAM_SUCCESS )
138 case CAM_ERROR_NOT_INITIALIZED:
139 vpERROR_TRACE(
"vp1394CMUGrabber error: No camera selected",index);
143 vpERROR_TRACE(
"vp1394CMUGrabber error: The camera %i is busy",index);
147 vpERROR_TRACE(
"vp1394CMUGrabber error: General I/O error when selecting camera number %i",index);
154 if (camera->Has1394b())
155 camera->Set1394b(TRUE);
158 if ((_format != -1) && (_mode != -1))
160 if (!camera->HasVideoMode(_format, _mode))
163 vpERROR_TRACE(
"vp1394CMUGrabber error: The image format is not supported by the IEEE 1394 camera number %i",index);
167 if (camera->SetVideoFormat(_format) != CAM_SUCCESS)
170 vpERROR_TRACE(
"vp1394CMUGrabber error: Can't set video format of IEEE 1394 camera number %i",index);
174 if (camera->SetVideoMode(_mode) != CAM_SUCCESS)
177 vpERROR_TRACE(
"vp1394CMUGrabber error: Can't set video mode of IEEE 1394 camera number %i",index);
183 _format = camera->GetVideoFormat();
184 _mode = camera->GetVideoMode();
194 if (!camera->HasVideoFrameRate(_format,_mode,_fps))
197 vpERROR_TRACE(
"vp1394CMUGrabber error: The frame rate is not supported by the IEEE 1394 camera number %i for the selected image format",index);
201 if (camera->SetVideoFrameRate(_fps) != CAM_SUCCESS)
204 vpERROR_TRACE(
"vp1394CMUGrabber error: Can't set video frame rate of IEEE 1394 camera number %i",index);
210 if ( _modeauto ==
false )
212 unsigned short min,max;
213 C1394CameraControl *Control;
215 Control = camera->GetCameraControl(FEATURE_GAIN);
217 Control->GetRange(&min,&max);
222 std::cout <<
"vp1394CMUGrabber warning: Desired gain register value of IEEE 1394 camera number " << index <<
" can't be less than " << _gain << std::endl;
227 std::cout <<
"vp1394CMUGrabber warning: Desired gain register value of IEEE 1394 camera number " << index <<
" can't be greater than " << _gain << std::endl;
230 Control->SetAutoMode(
false);
231 if(Control->SetValue(_gain) != CAM_SUCCESS)
233 std::cout <<
"vp1394CMUGrabber warning: Can't set gain register value of IEEE 1394 camera number " << index << std::endl;
236 Control = camera->GetCameraControl(FEATURE_SHUTTER);
238 Control->GetRange(&min,&max);
243 std::cout <<
"vp1394CMUGrabber warning: Desired exposure time register value of IEEE 1394 camera number " << index <<
" can't be less than " << _shutter << std::endl;
245 else if (_shutter>max)
248 std::cout <<
"vp1394CMUGrabber warning: Desired exposure time register value of IEEE 1394 camera number " << index <<
" can't be greater than " << _shutter << std::endl;
250 Control->SetAutoMode(
false);
251 if(Control->SetValue(_shutter) != CAM_SUCCESS)
253 std::cout <<
"vp1394CMUGrabber warning: Can't set exposure time register value of IEEE 1394 camera number " << index << std::endl;
258 camera->GetCameraControl(FEATURE_SHUTTER)->SetAutoMode(
true);
259 camera->GetCameraControl(FEATURE_GAIN)->SetAutoMode(
true);
263 camera->GetCameraControlTrigger()->SetOnOff(
false);
266 camera->GetVideoFrameDimensions(&width,&height);
283 I.
init(height,width);
286 if (camera->StartImageAcquisition() != CAM_SUCCESS)
289 vpERROR_TRACE(
"vp1394CMUGrabber error: Can't start image acquisition from IEEE 1394 camera number %i",index);
291 "Error while strating image acquisition") );
303 I.
init(this->height,this->width);
306 if (camera->StartImageAcquisition() != CAM_SUCCESS)
309 vpERROR_TRACE(
"vp1394CMUGrabber error: Can't start image acquisition from IEEE 1394 camera number %i",index);
311 "Error while strating image acquisition") );
326 unsigned long length;
327 unsigned char *rawdata = NULL ;
334 "Initialization not done") );
337 camera->AcquireImageEx(TRUE,&dropped);
338 rawdata = camera->GetRawData(&length);
343 memcpy(I.
bitmap, (
unsigned char *) rawdata, size);
367 vpERROR_TRACE(
"Format conversion not implemented. Acquisition failed.");
369 "Format conversion not implemented. "
370 "Acquisition failed.") );
395 unsigned long length;
396 unsigned char *rawdata = NULL;
403 "Initialization not done") );
406 camera->AcquireImageEx(TRUE,&dropped);
407 rawdata = camera->GetRawData(&length);
438 vpERROR_TRACE(
"Format conversion not implemented. Acquisition failed.");
440 "Format conversion not implemented. "
441 "Acquisition failed.") );
453 camera->StopImageAcquisition();
455 if (camera->StopImageAcquisition() != CAM_SUCCESS)
458 "vp1394CMUGrabber error: Can't stop image acquisition from IEEE 1394 camera") );
533 int n_cam = camera->RefreshCameraList();
558 if( camera->GetNumberCameras() > cam_id )
560 camera->GetNodeDescription(cam_id,buf,512);
561 std::cout <<
"Camera " << cam_id <<
": " << buf << std::endl ;
565 std::cout <<
"Camera " << cam_id <<
": camera not found" << std::endl ;
576 char vendor[256] , model[256] , buf[256];
579 camera->GetCameraName(model,
sizeof(model));
580 camera->GetCameraVendor(vendor,
sizeof(vendor));
581 camera->GetCameraUniqueID(&ID);
583 std::cout <<
"Vendor: " << vendor << std::endl;
584 std::cout <<
"Model: " << model << std::endl;
586 sprintf(buf,
"%08X%08X",ID.HighPart,ID.LowPart);
587 std::cout <<
"UniqueID: " << buf << std::endl;
int getNumberOfConnectedCameras() const
void setVideoMode(unsigned long format, unsigned long mode)
static void RGBToGrey(unsigned char *rgb, unsigned char *grey, unsigned int size)
unsigned int getWidth() const
void init(unsigned int height, unsigned int width)
set the size of the image
void open(vpImage< unsigned char > &I)
static void RGBToRGBa(unsigned char *rgb, unsigned char *rgba, unsigned int size)
Type * bitmap
points toward the bitmap
static void MONO16ToGrey(unsigned char *grey16, unsigned char *grey, unsigned int size)
vpColorCodingType getVideoColorCoding() const
Get the video color coding format.
static void GreyToRGBa(unsigned char *grey, unsigned char *rgba, unsigned int size)
static void YUV422ToRGBa(unsigned char *yuv, unsigned char *rgba, unsigned int size)
void displayCameraModel()
Error that can be emited by the vpFrameGrabber class and its derivates.
void displayCameraDescription(int cam_id)
static void YUV444ToRGBa(unsigned char *yuv, unsigned char *rgba, unsigned int size)
static void YUV422ToGrey(unsigned char *yuv, unsigned char *grey, unsigned int size)
virtual ~vp1394CMUGrabber()
void setFramerate(unsigned long fps)
void acquire(vpImage< unsigned char > &I)
unsigned int height
Number of rows in the image.
static void MONO16ToRGBa(unsigned char *grey16, unsigned char *rgba, unsigned int size)
bool init
Set to true if the frame grabber has been initialized.
static void YUV444ToGrey(unsigned char *yuv, unsigned char *grey, unsigned int size)
static void YUV411ToRGBa(unsigned char *yuv, unsigned char *rgba, unsigned int size)
unsigned int getHeight() const
static void YUV411ToGrey(unsigned char *yuv, unsigned char *grey, unsigned int size)
unsigned int width
Number of columns in the image.
void setControl(unsigned short gain, unsigned short shutter)
void selectCamera(int cam_id)