Qt控制台项目也能使用opencv的imshow来显示摄像头视频

创建一个Qt控制台项目,目的是实现在控制台打开摄像头视频。由于windows平台是支持GUI(图形用户界面)功能,所以在windows环境下是可以打开的,但是linux环境下,由于不支持GUI功能,而是支持wayland,而imshow()是基于GUI的,所以在linux环境下运行这段代码会报错,如果想在linux环境下显示摄像头视频,必须创建QWidget项目,视频显示在QLabel控件上才可以。控制台项目默认pro是不包含QT += core widgets这一行的,需要手动加上这一行代码,另外,在main函数中不要使用QCoreApplication,而是使用QApplication,因为QCoreApplication不支持GUI功能。

pro文件:

cpp 复制代码
QT -= gui
QT += core widgets
CONFIG += c++11 console
CONFIG -= app_bundle
DEFINES += QT_DEPRECATED_WARNINGS
win32{
    INCLUDEPATH += D:/opencv4.1.2/build/install/include/
    LIBS += D:/opencv4.1.2/build/install/x86/mingw/bin/libopencv_*.dll
}
SOURCES += \
        main.cpp

qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target

cpp源码:

cpp 复制代码
#include <QApplication>
#include <opencv2/opencv.hpp>
using namespace cv;
using namespace std;
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    string url="rtsp://admin:admin123@192.168.2.184:554/h264/ch1/sub/av_stream";
    VideoCapture cap;
    if(!cap.open(url,CAP_ANY)){
        return -1;
    }else{

        Mat img;
        while (1) {
            if(!cap.read(img)){
                continue;
            }else{
                imshow("img",img);
                cv::waitKey(1);
            }

        }

    }

    return a.exec();
}

秋风写于淄博,技术交流与业务联系:Q375172665

相关推荐
ai产品老杨7 小时前
GB28181接入AI视频分析项目实战记录:从国标注册、通道同步到信令调优
人工智能·音视频
最爱老式锅包肉8 小时前
《HarmonyOS技术精讲-蓝牙》传统蓝牙实战:音频播放与文件传输
华为·音视频·harmonyos
言乐69 小时前
Python视频相对亮度检测
数据库·python·计算机视觉·小程序·音视频
汤姆yu9 小时前
面向具身智能的物理视频模拟器:蚂蚁灵波LingBot-Video开源模型全解析
java·大数据·人工智能·gpt·开源·大模型·音视频
USB_ABC10 小时前
视频矩阵核心技术对比:模块化vs固定机箱、硬件帧同步vs软件同步怎么选
矩阵·音视频
沐禾安信10 小时前
开会来不及记录?Mac 录屏方法收好
macos·音视频·电脑录屏
hz567891 天前
电子远程评标系统哪家好?安全、合规、易用平台评测指南
安全·云计算·音视频·实时音视频·信息与通信
杜子不疼.1 天前
【Qt初识】信号槽(三):机制意义、断开连接与 Lambda 表达式
开发语言·数据库·qt
星空语1 天前
音频001_Android+Linux车载/手机音频全链路分层架构图
android·linux·音视频
杜子不疼.1 天前
【Qt初识】信号槽(二):自定义信号函数与槽函数
开发语言·qt