本文介绍了OpenCV,Qt,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

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;
    }

当我点击run时,没有任何错误,但是只显示了一个名为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和openCV-2.4.6.0的Qt Creator 2.8.1.

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():

std::string filename = ...
cv::Mat mat = cv::imread(filename);

// Since OpenCV uses BGR order, we need to convert it to RGB
// NOTE: OpenCV 2.x uses CV_BGR2RGB, OpenCV 3.x uses cv::COLOR_BGR2RGB
cv::cvtColor(mat, mat, cv::COLOR_BGR2RGB)

// image is created according to Mat dimensions
QImage image(mat.size().width, mat.size().height, QImage::Format_RGB888);

// Copy cv::Mat to QImage
memcpy(image.scanLine(0), mat.data, static_cast<size_t>(image.width() * image.height() * mat.channels()));

// Display the QImage in a QLabel
QLabel label;
label.setPixmap(QPixmap::fromImage(image));
label.show();

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

07-30 17:27