- 在线时间
- 471 小时
- 最后登录
- 2025-8-11
- 注册时间
- 2023-7-11
- 听众数
- 4
- 收听数
- 0
- 能力
- 0 分
- 体力
- 7603 点
- 威望
- 0 点
- 阅读权限
- 255
- 积分
- 2861
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 1160
- 主题
- 1175
- 精华
- 0
- 分享
- 0
- 好友
- 1
该用户从未签到
 |
#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();
}
|
zan
|