【Windows系统QT5.9.8平台+OPENCV3.4.3+视频采集+录制+截图】开发实例教程

348 阅读3分钟

【Windows系统QT5.9.8平台+OPENCV3.4.3+视频采集+录制+截图】开发实例教程202108

【软件开发】 本系统开发采用了QT编程技术,OPENCV技术,多线程技术实现的视频监控和录制系统。主要包括视频数据的采集,视频录制和截图保存等功能。

(1)环境搭建 下载并安装QT5.9.8:mp.csdn.net/mp_blog/cre…

下载安装opencv3.4.3:mp.csdn.net/mp_blog/cre…

(2)新建工程 (3)在工程中配置opencv链接库

(4)界面布局

(5)结果展示 左边是视频显示区域,右边是截图后显示的照片;

【OPENCV相关知识】 【01读写类文件的使用】 在编写函数之前,对用到OpenCV中的类稍作介绍: 像对其他硬件操作一样,要想调用系统中的摄像头,无非就两个操作一个读,一个写,那么OpenCV这个开源库就为我们对摄像头的读写操作编写了两个类。

VideoCapture 用于视频的读操作(这里的读包括两个方面,一个是对摄像头画面的读取,另一个是对视频文件帧的读取)

VideoWriter 用于视频的写操作(主要用于将获取的画面以帧的形式写入视频文件中,实现视频的保存)

另外,在从获取视频的帧,到画面的显示,这个过程中画面 都是以矩阵的形式进行传递与转换,这就用到了另外一个类 Mat。

可以说,从一开始加载图片,到我们最终实现多线程调用摄像头、保存、回放视频,都是这三个类中相关函数的作用。

【02视频编码格式】

【03需要使用的动态链接库】

录像保存:需要用到opencv_ffmpeg.dll

保存视频的效果图:

2 在项目文件中完成OPENCV的配置,加载

下载opencv3.4.3,然后完成opencv的配置

下载地址:

CONFIG += c++11

SOURCES += \

    main.cpp \

    mainwindow.cpp \

thread_record.cpp

HEADERS += \

    mainwindow.h \

thread_record.h

FORMS += \

    mainwindow.ui

INCLUDEPATH += D:/opencv3.4.3/include \

           D:/opencv3.4.3/include/opencv \

           D:/opencv3.4.3/include/opencv2

D:/opencv3.4.3/include/opencv2/video/video.hpp\

D:/opencv3.4.3/include/opencv2/core/mat.hpp

LIBS += D:/opencv3.4.3/x64/vc14/lib/opencv_*\

常见问题及解决方法: 【问题描述1】: 在Release模式下,运行Camera程序,点击打开摄像头,无问题,打开开始录制,程序执行一段时间后退出;报错如下:

OpenCV: terminate handler is called! The last OpenCV error is:

OpenCV(3.4.3) Error: Assertion failed (videoSample) in SourceReaderCB::Wait, file c:\build\3_4_winpack-build-win64-vc15\opencv\modules\videoio\src\cap_msmf.cpp, line 1079

09:57:55: 程序异常结束。

问题分析:可能是cap_msmf.cpp导致程序出错;

解决方法:cap.opencv (0,::CAP_DSHOW);

【问题描述2】 Camera视频录制的时候有文件生成,但内存为0KB

解决方法:参考链接:blog.csdn.net/weixin_4298…

【问题描述】Camera 视频录制有文件生成,但只有6kb ,而且程序无法打开。

问题分析:经过调试发现,6kB 是因为视频流没有真正写入进来,经过查阅资料,发现没有写读取视频流的代码:在录制视频程序中加入这行代码问题解决。

初始化时使用的帧大小和写入文件帧大小应该相同。

【问题描述3】 可以录制一定时长的程序,但是程序运行一段时间后报错:

后将模式由Debug模式改为Release模式,

【问题描述4】 视频录制完成后,进行播放是快进式播放,经过查阅资料可能是release模式

截图功能实现的过程 ———————————————— 版权声明:本文为CSDN博主「gl1037645565」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:blog.csdn.net/gl103764556…