查看: 114|回复: 9

VIDIOC_S_FMT: Invalid argument

[复制链接]

12

主题

50

帖子

156

积分

科员

Rank: 2

积分
156
发表于 2021-4-30 11:19:39 | 显示全部楼层 |阅读模式
HI  :       如题,基于GMSL的库,自己写的打开相机的程序。我link了
/opt/miivii/lib/libmiivii_accelerator.so
/opt/miivii/lib/libmiivii-accelerator.so
/opt/miivii/lib/libmvfusion.so
/opt/miivii/lib/libmvgmslcam.so
/opt/miivii/lib/libmvgmslcamera.so
/opt/miivii/lib/libmvyolo.so
所有的库(不清楚那个是干什么的,反正全link)。
编译不报错,但是运行报错。
......./build$ ./calib_model_lut -d /dev/video0 -s 5120x720 -r 25
MiiVii GMSL-Camera SDK Version: 2.2.0  
Producer mode.
VIDIOC_S_FMT: Invalid argument



用sample/gmsl_camera是可以打开相机的。
回复

使用道具 举报

5

主题

117

帖子

251

积分

科长

Rank: 3Rank: 3

积分
251
发表于 2021-4-30 11:27:47 | 显示全部楼层
您好:

如果您使用的是Apex Xavier II,可以参考一下这个帖子。
我们提供了一个直接使用opencv的例子,后续会更新到github上。
https://forum.miivii.com/forum.php?mod=viewthread&tid=462

如果您使用的是Apex Xavier,我们建议您在我们给出示例的Makefile里面,把下面这句话打印出来。
这样您就知道自己的Makefile需要如何写了。
目前您碰到的问题应该是参数传递的问题,目前建议排查一下,传给SDK的参数是否和原来是一样的。
后续我们也会在调用SDK时加入参数打印,帮助定位类似问题。

$(CPP) -o $@ $(EXAMPLE_OBJS) -L"$(TOP_DIR)/source" -lmvgmslcamera $(CPPFLAGS) $(LDFLAGS)
回复

使用道具 举报

12

主题

50

帖子

156

积分

科员

Rank: 2

积分
156
 楼主| 发表于 2021-4-30 11:45:41 | 显示全部楼层
我写的CMakeList  
cmake_minimum_required(VERSION 3.5)
project(calib_model_lut)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")

SET(CMAKE_BUILD_TYPE "Debug")
SET(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -O0 -Wall -g -ggdb")

SET(CMAKE_CXX_FLAGS_RELEASE "$ENV{CXXFLAGS} -O3 -Wall")

find_package(OpenCV REQUIRED)  
MESSAGE(INFO ${OpenCV_INCLUDE_DIRS})

include_directories(${PROJECT_SOURCE_DIR})

set(SOURCE_FILES ${PROJECT_SOURCE_DIR}/main.cpp )

include_directories(
  ${OpenCV_INCLUDE_DIRS}
  /data/openlib/cv31/include
  /usr/local/include
  ${PROJECT_SOURCE_DIR}/src
  /opt/miivii/include
)

link_directories(
  /data/openlib/cv31/lib
  ${PROJECT_SOURCE_DIR}
  ${PROJECT_SOURCE_DIR}/src
  ${LIB_ARCH}
)

include_directories(
        /usr/src/jetson_multimedia_api/include
        /usr/src/jetson_multimedia_api/)

link_directories(/opt/miivii/lib
        /usr/lib/aarch64-linux-gnu/
        /usr/lib/aarch64-linux-gnu/tegra
        )

aux_source_directory(. DIR_SRCS)

add_executable(calib_model_lut ${SOURCE_FILES})

target_link_libraries(calib_model_lut
  ${OpenCV_LIBS}
  pthread
  v4l2
  rt
  nvbuf_utils
  libmvgmslcam.so
  libmvgmslcamera.so
)

回复

使用道具 举报

12

主题

50

帖子

156

积分

科员

Rank: 2

积分
156
 楼主| 发表于 2021-4-30 12:33:09 | 显示全部楼层
sample_context_t ctx;
    ctx.cam_fmt = "5120x720";
    ctx.cam_devname = "/dev/video0";
    ctx.cam_h = 720;
    ctx.cam_w = 5120;
    ctx.window_num = 4;
    ctx.fps = 25;

    if (!parse_cmdline(&ctx, argc, argv))
    {
        return -1;
    }

    uint imgWidth{1280};
    uint imgHeight{720};
    string imgFmt = {"ABGR32"};
    //std::string windowName("DisplayCamera ");

    uint64_t timestamp{};
    miivii::MvGmslCamera mvcam(ctx.cam_devname, ctx.window_num, ctx.cam_w, ctx.cam_h, ctx.fps, imgWidth, imgHeight, imgFmt);
    cv::Mat outMat[ctx.window_num];

    // cv::VideoWriter wFile_stitch;
    // wFile_stitch.open("/home/nvidia/xingtu/image/wFile_stitch.mp4", cv::VideoWriter::fourcc('M', 'P', '4', 'V'), 25.0, cv::Size(1280, 720),true);

    while (true)
    {
        if (mvcam.GetImageCvMat(outMat, timestamp))
        {
            cv::cvtColor(outMat[0], outMat[0], cv::COLOR_RGBA2BGR);
            cv::imshow("front", outMat[0]);
            cv::cvtColor(outMat[1], outMat[1], cv::COLOR_RGBA2BGR);
            cv::imshow("right", outMat[1]);
            cv::cvtColor(outMat[2], outMat[2], cv::COLOR_RGBA2BGR);
            cv::imshow("back", outMat[2]);
            cv::cvtColor(outMat[3], outMat[3], cv::COLOR_RGBA2BGR);
            cv::imshow("left", outMat[3]);
        }
    }
回复

使用道具 举报

12

主题

50

帖子

156

积分

科员

Rank: 2

积分
156
 楼主| 发表于 2021-5-6 13:47:20 | 显示全部楼层
HI:
   可以看看这段代码和CMakeList的配置有什么问题么?
回复

使用道具 举报

0

主题

11

帖子

72

积分

版主

Rank: 7Rank: 7Rank: 7

积分
72
发表于 2021-5-7 13:32:31 | 显示全部楼层
孤云独去闲 发表于 2021-4-30 12:33
sample_context_t ctx;
    ctx.cam_fmt = "5120x720";
    ctx.cam_devname = "/dev/video0";

ctx.cam_fmt = "5120x720";
cam_fmt设置出问题了,请参考我们的设备中的实例代码。
回复

使用道具 举报

12

主题

50

帖子

156

积分

科员

Rank: 2

积分
156
 楼主| 发表于 2021-5-8 14:28:14 | 显示全部楼层
fengl 发表于 2021-5-7 13:32
ctx.cam_fmt = "5120x720";
cam_fmt设置出问题了,请参考我们的设备中的实例代码。
...

1.我打印了例程中变量ctx.cam_fmt的输出,就是5120x720
2.代码里有对参数的解析,逻辑上初值不造成影响
3.代码在例程的基础上修改的。 但是在硬盘的其他地方
回复

使用道具 举报

12

主题

50

帖子

156

积分

科员

Rank: 2

积分
156
 楼主| 发表于 2021-5-8 14:54:47 | 显示全部楼层
我觉得是CMakeList的配置,少了某些库。能提供一下CMakeList的例子版本么?
回复

使用道具 举报

0

主题

11

帖子

72

积分

版主

Rank: 7Rank: 7Rank: 7

积分
72
发表于 2021-5-8 16:11:34 | 显示全部楼层
孤云独去闲 发表于 2021-4-30 12:33
sample_context_t ctx;
    ctx.cam_fmt = "5120x720";
    ctx.cam_devname = "/dev/video0";

ctx.cam_w = 5120;
这个需要设置成1280,尝试一下。
回复

使用道具 举报

12

主题

50

帖子

156

积分

科员

Rank: 2

积分
156
 楼主| 发表于 2021-5-8 16:34:31 | 显示全部楼层
fengl 发表于 2021-5-8 16:11
ctx.cam_w = 5120;
这个需要设置成1280,尝试一下。

OK,有可能是这个原因。我刚看了一下解析参数的函数,没有对ctx.cam_w 重新赋值。我再试试,谢谢啦!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 点我注册

本版积分规则


快速回复 返回顶部 返回列表