OpenCV、Qt 和 Ubuntu 的 imshow 错误
Posted
技术标签:
【中文标题】OpenCV、Qt 和 Ubuntu 的 imshow 错误【英文标题】:imshow error with OpenCV, Qt & Ubuntu 【发布时间】:2015-07-12 18:59:58 【问题描述】:我在 Qt 5.3 中的一个基本程序有问题,代码如下:
mainwindow.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.rows
和 inputImage.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 错误的主要内容,如果未能解决你的问题,请参考以下文章
使用 OpenCV 库(ubuntu)编译错误 Qt Creator