关于Qt的OpenCV,imread,namedWindow,imshow不起作用 [英] OpenCV on Qt, imread, namedWindow, imshow does not working

查看:1236
本文介绍了关于Qt的OpenCV,imread,namedWindow,imshow不起作用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

.pro 文件中:

QT       += core

QT       -= gui

TARGET    = latihan_2
CONFIG   += console
CONFIG   -= app_bundle

TEMPLATE = app

SOURCES += main.cpp

INCLUDEPATH += E:\OpenCV\OpenCV\opencv\build\include

LIBS += E:\OpenCV\OpenCV\opencv\build\x86\mingw\lib\libopencv_core246.dll.a
LIBS += E:\OpenCV\OpenCV\opencv\build\x86\mingw\lib\libopencv_highgui246.dll.a
LIBS += E:\OpenCV\OpenCV\opencv\build\x86\mingw\lib\libopencv_imgproc246.dll.a
LIBS += E:\OpenCV\OpenCV\opencv\build\x86\mingw\lib\libopencv_features2d246.dll.a
LIBS += E:\OpenCV\OpenCV\opencv\build\x86\mingw\lib\libopencv_calib3d246.dll.a

In main.cpp

#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>

using namespace cv;

int main(){
    //read image
    Mat image = imread("img.jpg", 1);
    //create image window named "My image"
    namedWindow("My Image", CV_WINDOW_AUTOSIZE);
    //show the image on window
    imshow("My image", image);
    //wait key for 5000ms
    waitKey(5000);
    return 1;
    }

当我点击运行时,没有错误,但它只显示黑色窗口名为 qtcreator_process_stub.exe

When I hit run, there is no error, but it only shows a black window named qtcreator_process_stub.exe.

为什么我的图像窗口没有出来并显示img .JPG?
我使用基于Qt 5.1.1的Qt creator 2.8.1和openCV-2.4.6.0。

Why the "My image" window doesn't come out and shows the img.jpg? I use Qt creator 2.8.1, based on Qt 5.1.1, and openCV-2.4.6.0.

推荐答案

您还可以在Qt窗口中显示 cv :: Mat 我演示如何在 cvImage 。检查的实现cvImage :: _ open()

void cvImage::_open()
{
    // Display dialog so the user can select a file
    QString filename = QFileDialog::getOpenFileName(this,
                                                    tr("Open Image"),
                                                    QDir::currentPath(),
                                                    tr("Files (*.png *.jpg *.tiff *.bmp)"));

    if (filename.isEmpty()) // Do nothing if filename is empty
        return;

    cv::Mat img = cv::imread(filename.toStdString());
    if (img.empty())
        return;

    // Since OpenCV uses BGR order, we need to convert it to RGB
    cv::cvtColor(img, img, CV_BGR2RGB);

    // _image is created according to Mat dimensions
    if (_image)
    {
        delete _image;
    }
    _image = new QImage(img.size().width, img.size().height, QImage::Format_RGB888);

    // Copy cv::Mat to QImage
    memcpy(_image->scanLine(0), (unsigned char*)img.data, _image->width() * _image->height() * img.channels());

    // Set the filename as the window title
    setWindowTitle(filename);

    // Resize the window to fit video dimensions
    resize(img.size().width, img.size().height);

    // Mouse move events will occur only when a mouse button is pressed down,
    // unless mouse tracking has been enabled:
    QWidget::setMouseTracking(true);

    // Trigger paint event to redraw the window
    update();
}

这篇关于关于Qt的OpenCV,imread,namedWindow,imshow不起作用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆