-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画像は読まれました

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

プログラムが画像の場所を認識していないようです。プログラムが使用するライブラリの 1 つとして main.cpp を含めるようにしてください。そうすれば、プログラムは画像を見つけて開くことができます。

于 2014-09-18T05:36:46.370 に答える