OK、私はこの質問が新しいものではないかもしれないことを知っています.同じ問題をカバーするいくつかの記事をすでに読んでいますが、実際には役に立ちませんでした. 私はopencvが初めてで、imreadを使用して(実行可能ファイルが保存されているフォルダーとは異なるフォルダーに)画像をロードし、imshowを使用して表示しようとしています。それははるかに大きなコードの一部ですが、問題をカバーする部分を別のコードとしてここに示しました。
#include <stdio.h>
#include "cv.h"
#include "cvaux.h"
#include "highgui.h"
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/core/core.hpp"
#include <iostream>
#include "opencv2/contrib/contrib.hpp"
#include "opencv2/highgui/highgui_c.h"
#include "opencv/highgui.h"
#include "opencv2/objdetect/objdetect.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/imgproc/imgproc_c.h"
#include "opencv2/legacy/legacy.hpp"
#include <fstream>
#include <sstream>
#include <cctype>
#include <iterator>
#include <cstring>
#include <highgui.h>
#include <string.h>
int disp(char * filename);
using namespace std;
using namespace cv;
int main()
{
disp("file.txt");
}
int disp(char * filename)
{
FILE * fp;
char shr[50];
char ch;
if( !(fp = fopen(filename, "rt")) )
{
fprintf(stderr, "Can\'t open file %s\n", filename);
return 0;
}
for(i=0;ch != '\n';i++)
{
ch = fgetc(imgListFile);
shr[i] = ch;
}
string str(shr);
Mat image=imread(str.c_str(),1);
namedWindow( "Display Image", CV_WINDOW_AUTOSIZE );
imshow( "Display Image",image);
cvWaitKey(0);
}
「file.txt」は、読み込んで表示したい画像のフルパスを含むテキストファイルです。文字配列に読み込んで文字列に変換し、imshow/imread 関数に渡します。コンパイル中にエラーは発生しませんが、コードの実行中にエラーが発生します:
OpenCV Error: Assertion failed (size.width>0 && size.height>0) in imshow, file /home/ubuntu/Desktop/OpenCV/opencv-2.4.6.1/modules/highgui/src/window.cpp, line 261
terminate called after throwing an instance of 'cv::Exception'
what(): /home/ubuntu/Desktop/OpenCV/opencv-2.4.6.1/modules/highgui/src/window.cpp:261: error: (-215) size.width>0 && size.height>0 in function imshow
Aborted (core dumped)
opencvを再コンパイルしても、コードのデバッグを試みました。しかし、私は同じ問題を何度も繰り返しています。私は助けが必要です !!!
私の問題を適切に説明したことを願っています。前もって感謝します !!!
PS: テキスト ファイルには、実際にはすべてのイメージ パスの前に数字が含まれています。imshow/imread 関数へのパスをフィードする前に、番号を削除する必要があります。これが、テキスト ファイルを読み取って文字配列に格納しようとしている理由です (最初の 2 文字を最初に取り除くことができるようにするため)。