FFmpeg+OpenCV 读取摄像头

本文介绍了如何使用FFmpeg从摄像头读取数据,并通过两种方法将其转换为OpenCV的Mat格式进行显示,包括YUV图像空间的声明和显示效果。
摘要由CSDN通过智能技术生成

FFmpeg+OpenCV 读取摄像头

提供两种方式使用 FFmpeg 从摄像头中读取数据,并使用 OpenCV 显示视频帧。

读取摄像头

方法一

void VideoCapture() {
   
    avdevice_register_all();
    AVFormatContext *context = avformat_alloc_context();
    AVInputFormat *inputFormat = av_find_input_format("dshow");
    
    // 这里的 video=Logitech Webcam C930e 需要填写你自己的摄像头信息
    // 可以在终端下使用 ffmpeg -list_devices true -f dshow -i dummy 查看
    avformat_open_input(&context, "video=Logitech Webcam C930e", inputFormat, nullptr);
	
    int video_index = av_find_best_stream(context, AVMEDIA_TYPE_VIDEO, -1, -1, nullptr, 0);
    if (video_index == -1) {
   
        printf("Could not find a video stream");
        avformat_close_input(&context);
        return;
    }

    // 获取流参数
    AVCodecParameters *params = context->streams[video_index]->codecpar;

    // 获取解码器
    AVCodec *codec = avcodec_find_decoder(params->codec_id);

    // 初始化一个解码器的上下文
    AVCodecContext *codecContext = avcodec_alloc_context3(codec);
    if (avcodec_parameters_to_context(codecContext, params) != 0) {
   
        printf("Could not copy codec context");
        avformat_close_input(&context);
        return;
    }

    avcodec_open2(codecContext, codec, nullptr);
    AVFrame *frame = av_frame_alloc();
    AVFrame *frameYUV = av_frame_alloc();

    int width = codecContext->width;
    int height = codecContext->height;
    
    // 声明图像的空间用以保存 YUV 图像
    auto* out_buffer = (unsigned 
敬告:该系列的课程在抓紧录制更新中,敬请大家关注。敬告: 该系列的课程涉及:FFmpeg,WebRTC,SRS,Nginx,Darwin,Live555,OpenCV,等。包括:音视频、流媒体、直播、Android、视频监控28181、等。 我将带领大家一起来学习OpenCV4的图像处理原理和编程知识,并动手操练58案例代码。具体内容包括: 一、小白入门与初体验:禁果尝鲜二、图像基本操作:懵懵懂懂学图像三、图像统计操作:七七八八有收获四、图像卷积:不入虎穴焉得虎子五、磨皮美颜:柳暗花明又一村六、二值图像:阴阳合一法自然七、图像形态学:登高望远天地阔 音视频与流媒体是一门很复杂的技术,涉及的概念、原理、理论非常多,很多初学者不学 基础理论,而是直接做项目,往往会看到c/c++的代码时一头雾水,不知道代码到底是什么意思,这是为什么呢? 因为没有学习音视频和流媒体的基础理论,就比如学习英语,不学习基本单词,而是天天听英语新闻,总也听不懂。所以呢,一定要认真学习基础理论,然后再学习播放器、转码器、非编、流媒体直播、视频监控、等等。 梅老师从事音视频与流媒体行业18年;曾在永新视博、中科大洋、百度、美国Harris广播事业部等公司就职,经验丰富;曾亲手主导广电直播全套项目,精通h.264/h.265/aac,曾亲自参与百度app上的网页播放器等实战产品。目前全身心自主创业,主要聚焦音视频+流媒体行业,精通音视频加密、流媒体在线转码快编等热门产品。     
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值