无法使用库 dc1394 在视频模式 format7_4 下设置图像大小

Can't set image size under video mode format7_4 using library 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 is set: in _dc1394_v130_handshake (format7.c, line 126): invalid image position, size, color coding or ISO speed

libdc1394 error: Format_7 Error_flag_1 is set: in dc1394_format7_set_image_size (format7.c, line 482): F7 handshake failure

这很有趣,因为根据相机的 technical documentation(第 8.4.6 节),它是 format7_4 下支持的尺寸。

所以我有点卡住了,有人知道握手失败的原因吗? :/

在尝试了不同的参数后,我意识到默认情况下图像位置并未锚定在 left = 0top = 0。将它们设置为零 (dc1394_format7_set_image_position(camera, DC1394_VIDEO_MODE_FORMAT7_4, 0, 0);) 可以使用最大图像尺寸(在 format7_4 下 1040 x 776 就是这种情况)。