用QCamera读取摄像头图像并显示到QMainWindow上绘制的QLabel上的代码示例
时间: 2023-04-05 14:00:35 浏览: 151
以下是一个用QCamera读取摄像头图像并显示到QMainWindow上绘制的QLabel上的代码示例:
```cpp
#include <QCamera>
#include <QCameraViewfinder>
#include <QCameraImageCapture>
#include <QVBoxLayout>
#include <QMainWindow>
#include <QLabel>
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr)
: QMainWindow(parent)
{
// 创建摄像头对象
m_camera = new QCamera(this);
// 创建摄像头取景器对象
m_viewfinder = new QCameraViewfinder(this);
m_camera->setViewfinder(m_viewfinder);
// 创建图像捕获对象
m_imageCapture = new QCameraImageCapture(m_camera, this);
// 创建布局管理器
QVBoxLayout *layout = new QVBoxLayout;
layout->addWidget(m_viewfinder);
// 创建标签对象
m_label = new QLabel(this);
layout->addWidget(m_label);
// 设置主窗口的布局
QWidget *centralWidget = new QWidget(this);
centralWidget->setLayout(layout);
setCentralWidget(centralWidget);
// 连接信号槽
connect(m_imageCapture, &QCameraImageCapture::imageCaptured, this, &MainWindow::displayImage);
// 开启摄像头
m_camera->start();
}
private slots:
void displayImage(int id, const QImage &image)
{
// 将图像显示到标签上
m_label->setPixmap(QPixmap::fromImage(image));
}
private:
QCamera *m_camera;
QCameraViewfinder *m_viewfinder;
QCameraImageCapture *m_imageCapture;
QLabel *m_label;
};
```
这个示例中,我们创建了一个MainWindow类,继承自QMainWindow,用于显示摄像头图像。在构造函数中,我们创建了QCamera、QCameraViewfinder和QCameraImageCapture对象,用于读取摄像头图像。然后,我们创建了一个QVBoxLayout对象,用于管理QCameraViewfinder和QLabel对象的布局。我们将QCameraViewfinder添加到布局中,并将QLabel添加到布局中。最后,我们将布局设置为主窗口的中心窗口,并开启摄像头。当图像被捕获时,我们将其显示在QLabel上。
阅读全文