李成笔记网

专注域名、站长SEO知识分享与实战技巧

Qt opencv打开摄像头并录制成为AVI 文件

测试环境qt6.5.3 opencv4.10,以下是参考界面和主要文件的代码


#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "qtimer.h"

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}

MainWindow::~MainWindow()
{
    delete ui;
}


// 显示摄像头内容
void MainWindow::updateFrame() {
    cv::Mat frame;
    capture >> frame;  // 从摄像头获取帧
    if (frame.empty()) return;

    // 转换成Qt可显示的格式
    QImage img = QImage((const uchar*)frame.data, frame.cols, frame.rows, QImage::Format_BGR888);
    ui->label->setPixmap(QPixmap::fromImage(img).scaled(ui->label->size(), Qt::KeepAspectRatio, Qt::SmoothTransformation));
}


void MainWindow::on_openCamera_clicked()
{
    capture.open(0);  // 打开默认摄像头
    if (!capture.isOpened()) {
        QMessageBox::warning(this, "Error", "Failed to open camera.");
        return;
    }

    timer = new QTimer(this);
    connect(timer, &QTimer::timeout, this, &MainWindow::updateFrame);
    timer->start(30);  // 30ms更新一次
}


void MainWindow::on_closeCamera_clicked()
{
    if (isRecording) {
        writer.release();  // 释放视频文件
        // 恢复录制按钮状态
        ui->pushButton_RCD->setText("录制");
        ui->pushButton_RCD->setEnabled(true);
        ui->pushButton_StopRcd->setEnabled(false);
        isRecording = false;
    }

    if (timer) {
        timer->stop();
        delete timer;
        timer = nullptr;
    }
    capture.release();  // 释放摄像头


    ui->label->clear();
}


void MainWindow::on_pushButton_RCD_clicked()
{
    if (!capture.isOpened()) {
        QMessageBox::warning(this, "Error", "Camera is not opened.");
        return;
    }

    // 获取当前日期时间,并格式化为文件名
    QString dateTime = QDateTime::currentDateTime().toString("yyyyMMdd_hhmmss");
    QString filename = QDir::currentPath() + "/" + dateTime + ".avi";  // 保存到程序目录

    // 设置视频编码和帧率
    int width = capture.get(cv::CAP_PROP_FRAME_WIDTH);
    int height = capture.get(cv::CAP_PROP_FRAME_HEIGHT);

    // 打开 AVI 文件进行录制
    writer.open(filename.toStdString(), cv::VideoWriter::fourcc('M', 'J', 'P', 'G'), 30, cv::Size(width, height));

    if (!writer.isOpened()) {
        QMessageBox::warning(this, "Error", "Failed to start video recording.");
        return;
    }

    isRecording = true;
    // 更新录制按钮状态
    ui->pushButton_RCD->setText("录制中...");
    ui->pushButton_RCD->setEnabled(false);
    ui->pushButton_StopRcd->setEnabled(true);

    // 使用 QTimer 定时捕获帧
    QTimer* timer = new QTimer(this);
    connect(timer, &QTimer::timeout, this, &MainWindow::recordFrame);
    timer->start(33); // 约每30帧每秒 (1000ms / 30fps ≈ 33ms)

}
void MainWindow::recordFrame()
{
    if (isRecording) {
        cv::Mat frame;
        capture >> frame; // 从摄像头捕获一帧
        if (frame.empty()) {
            QMessageBox::warning(this, "Error", "Failed to capture frame.");
            return;
        }

        writer.write(frame); // 将帧写入视频文件
    }
}

void MainWindow::on_pushButton_StopRcd_clicked()
{
    if (isRecording) {
        writer.release();  // 释放视频文件
        // 恢复录制按钮状态
        ui->pushButton_RCD->setText("录制");
        ui->pushButton_RCD->setEnabled(true);
        ui->pushButton_StopRcd->setEnabled(false);
        isRecording = false;
    }
}


avi文件怎么转成mp4视频,3种方法快速学

avi文件怎么转成mp4视频?前面小编给大家讲了mov格式和webm格式,以及如何将mov和webm格式转换成mp4格式。今天小编给大家说一说另外一种视频格式,就是avi,AVI英文全称为Audio Video Interleaved,即音频视频交错格式,又是微软公司推出的一种多媒体格式,不得不说微软公司推出了很多音视频格式,每种不同类型的格式各有优缺点,但是对于用户来说可能就不那么的友好了,因为用户面对多格式视频的时候遇到最大的问题,就是兼容性问题,往往很多格式的兼容性不好,无法播放。

AVI如何转换为MP4格式?三种转换方法轻松上手

??AVI格式应该是大家经常见到的音视频格式之一了,而且在很多地方都可以看到AVI格式的音视频文件,基本上录制视频和光盘文件中更常见一些,画质非常好,特别适合电脑播放,但是呢,目前大家除了工作的时候,平时用的最多的应该就是手机和pad这种比较方便携带的设备。众所周知,如果在手机上播放音视频还是更倾向于MP4格式的文件。

??而且,小编觉得MP4格式的文件在手机上播放起来更流畅一些,那么,怎么才能把AVI格式文件转换为MP4格式呢?这就是今天要给大家解决的问题,给大家带来了三种转换方法,希望能对大家有所帮助。

解决AVI、MP4、MKV无法打开文件问题的全方位攻略

在数字时代,观看视频已成为我们日常生活中不可或缺的一部分。然而,有时我们会遇到AVI、MP4、MKV等常见视频格式无法打开的问题。本文将为您详细介绍解决这些问题的方法,让您轻松享受观影时光。

avi格式视频转换高清mp4的方法(avi的视频怎么转格式)

AVI英文全称为Audio Video Interleaved,即音频视频交错格式,AVI信息主要应用在多媒体光盘上,用来保存电视、电影等各种影像信息.

优点:跨平台使用

缺点:文件的体积(占用内存)过于庞大,压缩标准不统一,导致兼容问问题无法打开播放。因此很多人会选择把手中的avi格式转换成更为常用且兼容性高,无损的mp4格式,那我们该怎么无损的转换avi格式呢?接下来分享使用 "QVE音频转换器 " 将avi转成高清mp4格式的转换方法.

不会将avi转mp4?不用担心,这篇文章会告诉你答案

如何将avi转mp4?在现代数字世界中,视频是最流行的媒体类型之一。但是,不同的设备可能不支持所有视频格式。例如,某些设备可能无法播放.avi文件,这意味着你需要将这些文件转换为.mp4格式以使其在不同的设备上兼容。下面是一些更详细的关于.avi转.mp4的方法:

1. 迅捷视频转换器APP

迅捷视频转换器是一款功能强大的视频转换工具,可以将.avi格式转换为.mp4格式。该应用程序界面简单易用,可以轻松导入和转换视频。只需下载并安装迅捷视频转换器,选择你要转换的.avi文件,选择.mp4格式作为输出,然后单击“转换”按钮即可完成转换。此方法适用于想要快速简单地将.avi视频转换为.mp4格式的用户。

AVI视频文件损坏原因及解决方案(avi格式视频文件的缺点是什么)

AVI视频文件作为一种常见的视频格式,广泛应用于日常生活和工作中。然而,在使用过程中,我们可能会遇到AVI视频文件损坏的情况,这给我们的工作和生活带来诸多不便。本文将为您介绍AVI视频文件损坏的原因及解决方案,帮助您解决这个问题。

AVI是什么文件格式?如何打开avi格式文件?

有很多小伙伴在播放视频的时候会发现有AVI视频格式的文件,而且一般的播放器还无法打开。那么AVI到底是什么格式的文件?怎么打开avi格式文件?

格式转换技巧:Vep文件如何转换mp4格式,简单操作即可实现

  有些视频学习资料采用的是vep格式,这种格式只支持指定的播放器播放,而且在播放的时候没办法截图、录屏,这个给我们带来很大的困扰,那应该怎么解决呢?今天小编给小伙伴们支个招!


  Vep文件转换mp4格式具体操作如下:

手机上vep格式转换mp4怎么弄?这两个工具可以解决问题

手机上vep格式转换mp4怎么弄?可能有很多人都没有听说过这个视频格式,这是某个播放器所独有的格式,只有通过该播放器才能够打开这个加密的视频,安全系数很高,但也极大的限制了一个视频的传播和播放。如果我们在网络上下载了vep格式的视频,可以在手机上把该格式转换为mp4,这样就可以正常的打开和播放了。如果你还不会操作的话,不妨看看接下来的内容。

方法一:迅捷视频转换器APP

视频格式千奇百怪,不同的公司往往会研发不同的视频格式,有时候是为了使视频保持原有的清晰度,我们需要借助这样一个转换器,来帮助我们把视频格式同一成mp4,这样就可以在播放器中打开。还可以调整编码格式,让视频能够轻松剪辑。

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言