QT开发中文网

qt读取usb摄像头并在显示

在Qt中读取USB摄像头并进行显示,可以使用OpenCV库来实现。以下是一个简单的示例代码:

#include <QCoreApplication>
#include <opencv2/opencv.hpp>
#include <QImage>
#include <QLabel>

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    cv::VideoCapture cap(0); // 打开默认的摄像头(编号为0)

    if (!cap.isOpened()) {
        qDebug() << "无法打开摄像头";
        return -1;
    }

    cv::Mat frame;
    cv::namedWindow("Camera", cv::WINDOW_NORMAL);
    
    QLabel label;  // 创建一个用于显示图像的标签

    while (true) {
        cap >> frame; // 从摄像头读取一帧图像
        
        if (frame.empty()) {
            qDebug() << "无法获取视频帧";
            break;
        }

        QImage qimg(frame.data, frame.cols, frame.rows, static_cast<int>(frame.step), QImage::Format_BGR888);
        
        // 将图像数据转换为Qt支持的格式
        QPixmap pixmap = QPixmap::fromImage(qimg.rgbSwapped());
        
        // 将图像显示在标签上
        label.setPixmap(pixmap.scaled(label.size(), Qt::KeepAspectRatio));

        if (cv::waitKey(1) == 'q') { // 按下 'q' 键退出循环
            break;
        }
        
       QCoreApplication::processEvents();  // 处理Qt事件,保证界面刷新

   }
   
   cap.release();  // 释放摄像头资源
   
   return a.exec();
}

上述代码使用了OpenCV来读取摄像头视频流,并将每一帧转换为Qt支持的图像格式。然后,通过一个标签(QLabel)来显示图像。请确保已在项目中正确添加OpenCV和Qt库,并且正确配置构建环境。

这只是一个简单的示例,你可以根据自己的需求进行进一步定制和优化。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://qt.0voice.com/?id=9946

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?