用C++写用QCamera读取摄像头图像并显示到QLabel上的代码示例
时间: 2024-03-25 11:41:46 浏览: 54
以下是一个简单的C++代码示例,展示如何使用QCamera读取摄像头图像并将其显示在QLabel上:
```cpp
#include <QApplication>
#include <QMainWindow>
#include <QLabel>
#include <QVBoxLayout>
#include <QWidget>
#include <QCamera>
#include <QCameraInfo>
#include <QCameraViewfinder>
#include <QPixmap>
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr)
: QMainWindow(parent)
{
// 创建一个QCameraViewfinder对象,并设置为主窗口的中心部件
QCameraViewfinder *viewfinder = new QCameraViewfinder(this);
setCentralWidget(viewfinder);
// 获取第一个可用的摄像头
QCameraInfo camera_info = QCameraInfo::availableCameras().at(0);
camera = new QCamera(camera_info);
// 将摄像头输出流连接到QCameraViewfinder上
camera->setViewfinder(viewfinder);
// 启动摄像头
camera->start();
// 创建一个QLabel对象,并将其添加到主窗口的布局中
label = new QLabel(this);
QVBoxLayout *layout = new QVBoxLayout();
layout->addWidget(label);
QWidget *widget = new QWidget();
widget->setLayout(layout);
setCentralWidget(widget);
// 在主循环中,不断从摄像头中读取图像并将其显示在QLabel上
connect(camera, &QCamera::imageCaptured, this, &MainWindow::displayImage);
camera->startCapture();
}
private slots:
void displayImage(int id, QImage image)
{
// 将QImage转换为QPixmap,并将其设置为QLabel的图像
QPixmap pixmap = QPixmap::fromImage(image);
label->setPixmap(pixmap);
}
private:
QCamera *camera;
QLabel *label;
};
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
MainWindow window;
window.show();
return app.exec();
}
```
这个例子创建了一个QCameraViewfinder对象,并将其设置为主窗口的中心部件。它还获取第一个可用的摄像头,并将摄像头输出流连接到QCameraViewfinder上。在主循环中,它不断从摄像头中读取图像,并将其转换为QPixmap,并将其设置为QLabel的图像。
阅读全文