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;

}

0 ответов

Другие вопросы по тегам