赞
踩
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 的 QImage
- QImage 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 fps
- return a.exec();
- }

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。