-1

我是opencv的新手,我开始编写一个简单的代码来在gui中读取和显示图像,我在qt IDE中工作,首先我写了这段代码

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


int main()
{
   cv::Mat image=cv::imread("image.jpg");
   cv::namedWindow("My Image");
   cv::imshow("My Image",image);
   cv::waitKey(0);
   cv::destroyAllWindows();
   return 1;
 }

但是它在控制台中显示一个白色窗口和错误,然后显示另一个窗口“不响应”消息然后停止工作,这是一个屏幕截图 http://pbrd.co/1u2A0ow 然后我写了另一个有效性代码来检查wheater与否图像已被读取

int main()
{

Mat image;
cout<<"Size is"<<image.size().height<<","<<image.size().width<<endl;

image=imread("image.jpg");

//Checking first if the image have been read
if(!image.data)
{
    cout<<"\n No image has created \n"<<endl;
}

return 1;

}

它显示消息,这意味着图像未读取,所以问题是我如何成功读取和加载图像注意:main.cpp文件同一文件夹中的图像 http://pbrd.co/1u2Bmj1

4

2 回答 2

1

正如您所说,以下代码向您显示该文件不存在:

QFile file("image.jpg");
     if(file.exists())
         cout<<"\n exist \n"<<endl;
     else
         cout<<"\n not exist \n"<<endl;

解决方案:

首先,尝试设置图像的完整路径。由于某些原因,Qt 在错误的位置搜索您的文件,因此请设置完整路径。

例如:

cv::Mat image=cv::imread("G:\\2\\qt.jpg");
QFile file("G:\\2\\qt.jpg");
if(file.exists())
    cout<<"\n exist \n"<<endl;
else
    cout<<"\n not exist \n"<<endl;

或 UNIX 风格:

cv::Mat image=cv::imread("G:/2/qt.jpg");
QFile file("G:/2/qt.jpg");
if(file.exists())
    qDebug()<<"\n exist \n"<<endl;
else
     qDebug()<<"\n not exist \n"<<endl;
于 2014-09-18T06:17:51.083 回答
0

似乎程序不知道图像在哪里。尝试将 main.cpp 作为程序将使用的库之一。这样,程序将能够找到并打开图像。

于 2014-09-18T05:36:46.370 回答