关于Qt的OpenCV,imread,namedWindow,imshow不起作用 [英] OpenCV on Qt, imread, namedWindow, imshow does not working
本文介绍了关于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屋!
查看全文