1.效果图
2.代码
#include "widget.h"#include <QApplication>#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>#include <QImage>
#include <QLabel>
#include <QTimer>
#include <opencv2/opencv.hpp>using namespace cv;
int main(int argc, char *argv[])
{QApplication a(argc, argv);// 创建一个 QLabel 用于显示图像QLabel label;label.resize(640, 480); // 可根据需要进行调整label.show();// 打开摄像头cv::VideoCapture capture(0);if (!capture.isOpened()) {qDebug("Failed to open camera.");return -1;}// 使用 QTimer 定期更新图像显示QTimer timer;QObject::connect(&timer, &QTimer::timeout, [&]() {cv::Mat frame;capture >> frame; // 获取一帧图像if (!frame.empty()) {// 将 OpenCV 的图像转换为 Qt 的 QImageQImage image(frame.data, frame.cols, frame.rows, frame.step, QImage::Format_RGB888);image = image.rgbSwapped(); // BGR 转 RGB// 将 QImage 设置到 QLabel 上显示label.setPixmap(QPixmap::fromImage(image).scaled(label.size(), Qt::KeepAspectRatio));}});// 每秒更新一次图像显示timer.start(1000 / 30); // 30 fpsreturn a.exec();
}