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;