Невозможно установить размер изображения в режиме видео format7_4 с помощью библиотеки dc1394
Мне нужно настроить камеру Point Grey (FL3-U3-32S2C) с некоторыми значениями, которые мне дали. По какой-то причине все работает отлично, за исключением размера изображения.
Например, следующий (очень упрощенный) код работает отлично:
#include <dc1394/dc1394.h>
int main(int argc, char *argv[])
{
dc1394_t * d;
dc1394camera_t * camera;
dc1394camera_list_t * list;
// Get the camera
d = dc1394_new ();
if (!d) return 1;
dc1394_camera_enumerate (d, &list);
camera = dc1394_camera_new (d, list->ids[0].guid);
dc1394_camera_free_list (list);
// Configure
dc1394_video_set_mode(camera, DC1394_VIDEO_MODE_FORMAT7_4);
dc1394_format7_set_image_size(camera, DC1394_VIDEO_MODE_FORMAT7_4, 640, 480);
dc1394_camera_free(camera);
dc1394_free (d);
return 0;
}
Однако, если я сделаю dc1394_format7_set_image_size(camera, DC1394_VIDEO_MODE_FORMAT7_4, 1040, 776);
вместо этого программа выдает следующую ошибку
libdc1394 error: Format_7 установлен error_flag_1: в _dc1394_v130_handshake (format7.c, строка 126): неверное положение изображения, размер, цветовая кодировка или скорость ISO
Ошибка libdc1394: Format_7 Error_flag_1 установлен: в dc1394_format7_set_image_size (format7.c, строка 482): ошибка рукопожатия F7
который интригует, так как это поддерживаемый размер под format7_4
согласно технической документации камеры (раздел 8.4.6).
Так что я застрял, у кого-нибудь есть представление о том, почему рукопожатие терпит неудачу?:/
1 ответ
После игры с различными параметрами я понял, что положение изображения не было привязано к left = 0
а также top = 0
по умолчанию. Установка их на ноль (dc1394_format7_set_image_position(camera, DC1394_VIDEO_MODE_FORMAT7_4, 0, 0);
) позволил использовать максимальный размер изображения (например, при разрешении 1040 x 776 format7_4
).