郑州网站优化的微博_腾讯微博,怎么用dw网站怎么建设,做一个赚钱的网站,做网站怎么加视频最近遇到一些售前提供的BUG#xff0c;但是他们提供的是录像视频#xff0c;因为处理显示速度比较快#xff0c;因此很难找到出现问题的位置。需要反复播放#xff0c;自己编写了一个视频分解成图片这样就可以一张图一张图的对比#xff0c;方便查看。
开发环境
qtopenv…最近遇到一些售前提供的BUG但是他们提供的是录像视频因为处理显示速度比较快因此很难找到出现问题的位置。需要反复播放自己编写了一个视频分解成图片这样就可以一张图一张图的对比方便查看。
开发环境
qtopenvc
sudo apt install libopencv-dev源码说明
2.1 引用opencv动态库
.pro文件需要添加opencv的动态库
LIBS -lopencv_core -lopencv_imgproc -lopencv_highgui -lopencv_videoio -lopencv_imgcodecs2.2 Qt代码
将视频分解成每一帧然后将每一帧保存位图片。
void MainWindow::slotClickBtn()
{ // 打开视频文件cv::VideoCapture video(/pan/录屏_选择区域_20231227104611.mp4);// 检查视频是否成功打开if (!video.isOpened()) {std::cerr 无法打开视频文件 std::endl;}// 读取视频的帧率和总帧数double fps video.get(cv::CAP_PROP_FPS);int totalFrames video.get(cv::CAP_PROP_FRAME_COUNT);// 逐帧读取视频并保存为图像文件for (int frameNumber 0; frameNumber totalFrames; frameNumber) {cv::Mat frame;video.read(frame);// 检查是否成功读取帧if (frame.empty()) {std::cerr 无法读取视频帧 std::endl;break;}// 生成图像文件名例如 frame_0001.jpgstd::string filename frame_ std::to_string(frameNumber 1) .jpg;// 保存帧为图像文件cv::imwrite(filename, frame);}// 关闭视频文件video.release();std::cout 视频分解完成共生成 totalFrames 张图像文件。 std::endl;}2.3 源代码地址
https://gitcode.net/arv002/qt/-/tree/master/opencv/VideoDecomposition
三、扩展
3.1 VideoCapture 详解
cv::VideoCapture 是 OpenCV 中用于从视频文件、摄像头或图像序列中捕获帧的类。它提供了一种方便的方式来处理视频流和图像序列。
以下是一些关于 cv::VideoCapture 的主要方法和属性的详细说明
构造函数
cv::VideoCapture(const cv::String filename);
cv::VideoCapture(int index);filename视频文件的路径可以是本地文件路径或网络 URL。index摄像头的索引。通常0 表示默认摄像头1 表示第二个摄像头以此类推。
成员函数
bool open(const cv::String filename);
打开视频文件。返回 true 表示成功打开false 表示失败。
bool isOpened() const;
检查视频是否成功打开。返回 true 表示成功打开false 表示失败。
void release();
释放资源。关闭视频文件或释放摄像头。
bool read(cv::OutputArray image);
从视频流中读取一帧。返回 true 表示成功读取false 表示读取失败或到达视频末尾。
double get(int propId) const;
获取视频流的属性值例如帧率、宽度、高度等。propId 是属性标识符例如 cv::CAP_PROP_FPS 表示帧率。
bool set(int propId, double value);
设置视频流的属性值。propId 是属性标识符value 是要设置的值。
示例用法
#include opencv2/opencv.hpp
#include iostreamint main() {cv::VideoCapture cap(path/to/your/video.mp4);if (!cap.isOpened()) {std::cerr 无法打开视频文件 std::endl;return -1;}double fps cap.get(cv::CAP_PROP_FPS);int width cap.get(cv::CAP_PROP_FRAME_WIDTH);int height cap.get(cv::CAP_PROP_FRAME_HEIGHT);std::cout 帧率: fps 宽度: width 高度: height std::endl;cv::Mat frame;while (cap.read(frame)) {// 处理每一帧cv::imshow(Frame, frame);cv::waitKey(30); // 等待30毫秒}cap.release();cv::destroyAllWindows();return 0;
}上述代码演示了如何打开视频文件、获取视频属性、逐帧读取视频并显示。请根据实际需求调整。