OpenCV、Qt 和 Ubuntu 的 imshow 错误

Posted

技术标签:

【中文标题】OpenCV、Qt 和 Ubuntu 的 imshow 错误【英文标题】:imshow error with OpenCV, Qt & Ubuntu 【发布时间】:2015-07-12 18:59:58 【问题描述】:

我在 Qt 5.3 中的一个基本程序有问题,代码如下:

ma​​inwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <opencv2/opencv.hpp>


MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)

    ui->setupUi(this);
    cv::Mat inputImage = cv::imread("/home/isaac/lena.jpg");
    if(!inputImage.empty()) cv::imshow("Prueba",inputImage);




MainWindow::~MainWindow()

    delete ui;

displayimage.pro

QT       += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = displayimage
TEMPLATE = app

INCLUDEPATH += /usr/local/include/opencv
LIBS += -L/usr/local/lib -lopencv_core -lopencv_imgcodecs -lopencv_highgui

SOURCES += main.cpp\
    mainwindow.cpp

HEADERS  += mainwindow.h

FORMS    += mainwindow.ui

这是输出错误:

Starting /home/isaac/workspace/Qt Creator/Prueba/build-displayimage-Desktop_Qt_5_5_0_GCC_64bit-Release/displayimage...
The program has unexpectedly finished.
/home/isaac/workspace/Qt Creator/Prueba/build-displayimage-Desktop_Qt_5_5_0_GCC_64bit-Release/displayimage crashed

我只是读了一张图片并显示,但不工作,不知道为什么。如果我评论 imshow 程序有效。

【问题讨论】:

您可能还有其他调试错误.. 发布它们。此外,您可能需要在imshow 之后使用waitKey(0); 我添加了这个,程序仍然显示相同的错误,我没有其他错误只有这个。 在imread之后打印出img维度。 imputImage.rowsinputImage.cols 如果我取消注释 imshow 输出是相同的错误但如果我评论 imshow 输出是:正在启动 /home/isaac/workspace/Qt Creator/Prueba/build-displayimage-Desktop_Qt_5_5_0_GCC_64bit-Release/displayimage。 .. 行:512,列:512 QImage imgIn= QImage((uchar*) img.data, img.cols, img.rows, img.step, QImage::Format_RGB888); 【参考方案1】:

您的代码在我的机器上运行良好(Ubuntu 15.04、OpenCV 3.0.0、Qt)。在cv::imshow 之后放置cv::waitKey(0); 也没有区别。 您在编译 OpenCV 时是否启用了WITH_QT

【讨论】:

我认为是的,但我不确定。重建需要什么? 我正在使用 WITH_QT activate 进行编译并得到相同的错误。 您是否删除了计算机上的所有旧版本?我被这个问题困扰了很长时间,因为 Qt 不是(总是)使用最新安装的版本。调试时你能发现什么?您是否检查过您的库并包含路径(它们是否存在于您的系统中)?【参考方案2】:

我也遇到了同样的问题。 我已经解决了删除构建文件夹并使用以下方法重建的问题:

cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D WITH_OPENGL=ON ..

【讨论】:

以上是关于OpenCV、Qt 和 Ubuntu 的 imshow 错误的主要内容,如果未能解决你的问题,请参考以下文章

ubuntu下配置qt+opengl+opencv

使用 OpenCV 库(ubuntu)编译错误 Qt Creator

Ubuntu+Qt+OpenCV+FFMPEG环境搭建

ubuntu20下Qt5.14.2+OpenCV(含Contrib)-4.5.0环境搭建

ubuntu Qt5 opencv3.4 项目配置

Ubuntu中Qt+opencv图像显示