无法在opencv中读取图像

时间:2014-09-18 05:17:00

标签: c++ qt opencv imread

我是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 然后我写了另一个有效代码来检查图像是否已被读取

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

2 个答案:

答案 0 :(得分: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;

答案 1 :(得分:0)

似乎该程序不知道图像的位置。尝试将main.cpp包含为程序将使用的库之一。这样,程序就能找到并打开图像。