c++ - 使用QT查看来自相机的流图像

标签 c++ linux qt

我有一个软件可以通过网络将 JPG 发送到应该显示这些图像的 GUI 客户端。我基本上想将它们显示到 qt 窗口,但我对 qt 如何显示连续的 JPG 有疑问。我做了一个测试,看看我是否通过将图像打印到一个文件来正确地获取图像,并且检查结果很好。这是主要代码:

int main(int argc, char *argv[]) {
    // initialize resources, if needed
    // Q_INIT_RESOURCE(resfile);

    QApplication app(argc, argv);
    CameraWindow cw;
    cw.show();
    //app.setActiveWindow(&cw);
    cw.getData();       // this paints the window  
    return app.exec();
}

这是初始化小部件的代码:

class CameraWindow : public QDialog {
    Q_OBJECT
    public:
    bool serverConnected;
    void getData();
    CameraWindow()
    {
        imgl = new QLabel;
        widget.scrollImage->setWidget(imgl);
        widget.scrollImage->setBackgroundRole(QPalette::Dark);
    }
    QLabel *imgl;
    virtual ~CameraWindow();
    private:
    Ui::CameraWindow widget;
};

这是应该在无限循环内将图像绘制到屏幕的代码的相关部分:

getData() 从 main 调用:

while (myrval < Header.imageSize) {
    myrval = myrval + recv(msgsock, (char*) ((int) buff + myrval),
        Header.imageSize- myrval, 0);
}

//buff contains the jpg at this point
QPixmap imgjpg;
imgjpg.loadFromData((const unsigned char*)buff, Header.imageSize, "JPG");
//scroll image is the parent that displays child
//in this case, the label
imgl->setPixmap(imgjpg);

我只对从文件加载的一个图像使用此方法,但是当我对一组流图像使用相同的方法时,这不起作用。我是 Qt 的新手,所以我确定我犯了一个微妙的错误。

非常感谢!

最佳答案

因为你处于无限循环中,Qt 可能没有机会处理事件。你可以尝试在设置 Pixmap 后调用 QCoreApplication::processEvents 吗?

关于c++ - 使用QT查看来自相机的流图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6500476/

相关文章:

c++如何检查数组中的-1.#IND

c++ - 在不实现纯虚方法的情况下子类化模板类

C++ CMFCPropertyGridColorProperty 启用自动按钮

c++ - 对象指针的二维数组

linux - 如何删除所有 Docker 容器

linux - 重定向到/dev/null 和简单地关闭流之间的有效区别是什么

python - 如何将来自 UART 的传入字符添加到字符串中?

linux - 如何使用 OpenCv 在 Qt GUI 应用程序中显示网络摄像头提要?

c++ - Qt C++ 使用连接语句查找用法

带 SSL 的 Qt QNetworkAccessManager