V4L2 Camera 调试

V4L2是一个用于Linux操作系统的视频设备驱动框架。它提供了一个统一的接口,用于在应用程序和视频设备之间进行通信和交互,可通过开源库libv4l2,opencv来控制v4l2 camera,调试前需确保camera物理链路层完整。

1.libv4l2库

(1)环境配置

#需要#include <linux/videodev2.h>,#include <libv4l2.h>,安装开发库即可
sudo apt-get update
sudo apt-get install libv4l-dev

(2)使用说明

#include <iostream>
#include <cstdlib>
#include <cstring>
#include <fcntl.h>
#include <unistd.h>
#include <sys/ioctl.h>
#include <sys/mman.h>	
#include <linux/videodev2.h>
#include <libv4l2.h>
#include <opencv2/opencv.hpp>


#define WIDTH 2448
#define HEIGHT 2048

int main() {
    int fd;
    struct v4l2_capability v4l2Cap;
    struct v4l2_format v4l2Fmt;
    struct v4l2_requestbuffers v4l2ReqBuf;
    struct v4l2_buffer v4l2Buf;
    enum v4l2_buf_type v4l2BusType;


    std::string devStr = std::string("/dev/video11");
    std::cout << "cur dev:" << devStr << std::endl;
    // 打开设备
    fd = v4l2_open(devStr.c_str(), O_RDWR);
    if (fd == -1) {
        std::cerr << "open dev failed!" << std::endl;
        return 1;
    }

    // 查询设备能力
    if (v4l2_ioctl(fd, VIDIOC_QUERYCAP, &v4l2Cap) == -1) {
        std::cerr << "ioctl VIDIOC_QUERYCAP failed" << std::endl;
        v4l2_close(fd);
        return 1;
    }
    std::cout << "Driver: " << v4l2Cap.driver << std::endl;
    std::cout << "Card: " << v4
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值