libdc1394-2.2.6 захват нескольких кадров
Я хотел бы захватить несколько кадров с помощью libdc 1394. Я пытаюсь изменить код примера с помощью цикла for, но код не возвращает никакого изображения. Похоже, что код застрял в цикле. Кто-нибудь может мне помочь? Заранее спасибо.
Код ниже
/*-----------------------------------------------------------------------
* have the camera start sending us data
*-----------------------------------------------------------------------*/
err=dc1394_video_set_transmission(camera, DC1394_ON);
DC1394_ERR_CLN_RTN(err,cleanup_and_exit(camera),"Could not start camera iso transmission");
/*-----------------------------------------------------------------------
* capture one frame
*-----------------------------------------------------------------------*/
for( i=0;i<100 ;i++)
{
err=dc1394_capture_dequeue(camera, DC1394_CAPTURE_POLICY_WAIT, &frame);
}
DC1394_ERR_CLN_RTN(err,cleanup_and_exit(camera),"Could not capture a frame");
/*-----------------------------------------------------------------------
* stop data transmission
*-----------------------------------------------------------------------*/
err=dc1394_video_set_transmission(camera,DC1394_OFF);
DC1394_ERR_CLN_RTN(err,cleanup_and_exit(camera),"Could not stop the camera");
/*-----------------------------------------------------------------------
* save image as 'Image.pgm'
*-----------------------------------------------------------------------*/
imagefile=fopen(IMAGE_FILE_NAME, "wb");
if( imagefile == NULL) {
perror( "Can't create '" IMAGE_FILE_NAME "'");
cleanup_and_exit(camera);
}
dc1394_get_image_size_from_video_mode(camera, video_mode, &width, &height);
fprintf(imagefile,"P5\n%u %u 255\n", width, height);
fwrite(frame->image, 1, height*width, imagefile);
fclose(imagefile);
printf("wrote: " IMAGE_FILE_NAME "\n");
/*-----------------------------------------------------------------------
* close camera
*-----------------------------------------------------------------------*/
dc1394_video_set_transmission(camera, DC1394_OFF);
dc1394_capture_stop(camera);
dc1394_camera_free(camera);
dc1394_free (d);
return 0;
}