【Windows系统QT5.9.8平台+OPENCV3.4.3+视频采集+录制+截图】开发实例教程202108
本系统开发采用了QT编程技术,OPENCV技术,多线程技术实现的视频监控和录制系统。主要包括视频数据的采集,视频录制和截图保存等功能。
下载并安装QT5.9.8:https://mp.csdn.net/mp_blog/creation/editor/114658093
下载安装opencv3.4.3:https://mp.csdn.net/mp_blog/creation/editor/119024635
左边是视频显示区域,右边是截图后显示的照片;
在编写函数之前,对用到OpenCV中的类稍作介绍: 像对其他硬件操作一样,要想调用系统中的摄像头,无非就两个操作一个读,一个写,那么OpenCV这个开源库就为我们对摄像头的读写操作编写了两个类。
VideoCapture 用于视频的读操作(这里的读包括两个方面,一个是对摄像头画面的读取,另一个是对视频文件帧的读取)
VideoWriter 用于视频的写操作(主要用于将获取的画面以帧的形式写入视频文件中,实现视频的保存)
另外,在从获取视频的帧,到画面的显示,这个过程中画面 都是以矩阵的形式进行传递与转换,这就用到了另外一个类 Mat。
可以说,从一开始加载图片,到我们最终实现多线程调用摄像头、保存、回放视频,都是这三个类中相关函数的作用。
录像保存:需要用到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_*\
在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);
Camera视频录制的时候有文件生成,但内存为0KB
解决方法:参考链接:https://blog.csdn.net/weixin_42984932/article/details/108078295
【问题描述】Camera 视频录制有文件生成,但只有6kb ,而且程序无法打开。
问题分析:经过调试发现,6kB 是因为视频流没有真正写入进来,经过查阅资料,发现没有写读取视频流的代码:在录制视频程序中加入这行代码问题解决。
初始化时使用的帧大小和写入文件帧大小应该相同。
可以录制一定时长的程序,但是程序运行一段时间后报错:
后将模式由Debug模式改为Release模式,
视频录制完成后,进行播放是快进式播放,经过查阅资料可能是release模式
截图功能实现的过程
程序源码:https://download.csdn.net/download/gl1037645565/21495972