Skip to main content

3.1.1 MIPI 相机使用说明

环境配置

请将 MIPI 摄像头模组连接至开发板的 MIPI CSI 接口。具体连接方式可参考下图所示:

显示器与开发板之间通过 HDMI 线缆进行连接。

C++ 接口

以下示例展示了如何使用 JDK 提供的 C++ 接口完成 MIPI 相机图像的采集与显示:

// 打开摄像头节点
auto camera = JdkCamera::create("/device/video50", 1920, 1080, V4L2_PIX_FMT_NV12);

// 初始化显示模块(vo)
auto jdkvo = std::make_shared<JdkVo>(1920, 1080, PIXEL_FORMAT_NV12);

// 获取一帧图像数据
auto frame = camera->getFrame();

// 将图像帧发送至显示模块
auto ret = jdkvo->sendFrame(frame);

快速开始

本节介绍如何在开发板上使用 JDK 提供的 MIPI 摄像头采集 SDK 进行编译与运行。

1)将源码包 jdk_cam.tar 下载至开发板本地,并解压:

tar xvf jdk_cam.tar

解压后目录结构如下:

jdk_cam/
├── Makefile
├── .clang-format
├── src/
│ └── main.cpp
└── workspace/

2)进入源码目录,编译 SDK:

cd jdk_cam
make all

编译成功后,执行文件 jdk_cam 将生成于 workspace/ 目录下:

./workspace/jdk_cam

3)加载 jdk_dma 驱动模块,加载之前确保驱动模块已安装:

insmod /opt/jdk/ko/jdk_dma.ko

4)运行采集程序并指定 MIPI 摄像头设备节点(如 /dev/video51):

./workspace/jdk_cam /dev/video51

正常运行时,终端将输出摄像头采集与显示初始化的日志信息。例如:

start buffer preprocessing
start buffer queue
VIDIOC_STREAMON succeeded
[MPP-DEBUG] 10419:VO_CreateChannel:43 create VO Channel success!
[MPP-DEBUG] 10419:module_init:159 +++++++++++++++ module init, module type = 101
[MPP-DEBUG] 10419:check_vo_sdl2:121 yeah! have vo_sdl2---------------
[MPP-DEBUG] 10419:find_vo_sdl2_plugin:86 yeah! we have vo_sdl2_plugin plugin---------------
[MPP-DEBUG] 10419:module_init:207 ++++++++++ VO_SDL2 (/usr/lib/libvo_sdl2_plugin.so)
[MPP-DEBUG] 10419:module_init:207 ++++++++++ open (/usr/lib/libvo_sdl2_plugin.so) success !
[MPP-ERROR] 10419:al_vo_init:93 SDL could not initialize! SDL_Error: wayland not available
[MPP-ERROR] 10419:al_vo_init:128 k1 vo_sdl2 init fail
[MPP-DEBUG] 10419:VO_Init:66 init VO Channel, ret = -400
[MPP-ERROR] 10419:JdkVo:32 VO_init failed, please check!
[MPP-DEBUG] 10419:VO_Process:82 vo one packet, ret = 0
index:0,dma_fd:12 width:1920,height:1080,size:3110400

运行效果

程序运行后,摄像头采集到的图像将在显示器上实时呈现,如下图所示: