0

私はEclipse ideでOpenCVバージョン2.4.1を使用してUbuntu 12.04、32ビットプラットフォームで作業しています。cpp ファイルがあるプロジェクトの現在の場所に画像を配置した後でも、cvLoadImage() 関数は NULL 値を返します。

#include "highgui.h"
#include<iostream>
using namespace std;
int main( int argc, char** argv )
{
  char image[80]="baboon.jpg";
  IplImage* img = cvLoadImage(image,CV_LOAD_IMAGE_COLOR);
  cout<<img<<endl;
}

以下は私のインクルードファイルディレクトリです:

-I/usr/local/include/opencv -I/usr/local/include

ライブラリ ファイルは次のとおりです。

/usr/local/lib/libopencv_calib3d.so /usr/local/lib/libopencv_contrib.so /usr/local/lib/libopencv_core.so /usr/local/lib/libopencv_features2d.so /usr/local/lib/libopencv_flann.so /usr/local/lib/libopencv_gpu.so /usr/local/lib/libopencv_highgui.so /usr/local/lib/libopencv_imgproc.so /usr/local/lib/libopencv_legacy.so /usr/local/lib/libopencv_ml.so /usr/local/lib/libopencv_nonfree.so /usr/local/lib/libopencv_objdetect.so /usr/local/lib/libopencv_photo.so /usr/local/lib/libopencv_stitching.so /usr/local/lib/libopencv_ts.so /usr/local/lib/libopencv_video.so /usr/local/lib/libopencv_videostab.so

私の img 値は常にゼロ (NULL) です。コンパイル エラーは発生しません。フォーラムで同様の投稿を確認しましたが、どれも問題を解決できませんでした。PNG 画像でも試しましたが、同じ問題に直面しました。前もって感謝します

4

4 に答える 4

2

画像ファイルへのフル パスを指定しようとしましたか? そうでない場合は、イメージ ファイルが実行可能ファイルのあるフォルダーにあることを確認します (一部の IDE には、デバッグ用とリリース用に別のフォルダーがあります)。

于 2012-09-14T07:31:41.127 に答える
1

私もOpenCV初心者ですが、ここではcout'<<'img'<<'endl;だと思います。ポインタの値、つまり「img」に格納されているアドレスを出力しています。これが私が使用する例であり、動作します:

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

using namespace cv;
using namespace std;

int main()
{
    Mat image; // new blank image
    image = imread("lena.bmp", 0);// reads the image file (I put the image in the same    project's directory).
    namedWindow("My Loaded Image", CV_WINDOW_AUTOSIZE );// creates a window for display.
    imshow("Display window",image);// shows the image inside it.
    waitKey(0);// wait for a keystroke in the window (When you don't do this, the image disappears instantly).
    return 0;
}
于 2013-12-25T09:43:43.043 に答える
0

OpenCV のごく最近のバージョンを使用しているため、画像 (cv::Mat) および読み取り関数には新しい C++ インターフェイスを使用することをお勧めします。

演算子 << は IplImage でも使用できますか? 私はそうは思わない、それがおそらくあなたのコンパイルエラーの原因です。

新しいインターフェイスを使用すると、コードは次のようになります。

#include <cstdlib>
#include<iostream>
#include <string>
#include <opencv2/highgui/higui.hpp>

using namespace std;
int main( int argc, char** argv )
{
  const std::string imageName = "baboon.jpg";
  cv::Mat img = cv::imread(image,CV_LOAD_IMAGE_COLOR);
  cout<<img<<endl;
  return EXIT_SUCCESS;
}
于 2012-09-14T08:25:21.340 に答える
0

プログラムを Eclipse 内から直接実行している場合、イメージは .cpp ファイルのあるフォルダーに配置する必要があります。

ただし、端末からプログラムを実行している場合、イメージ ファイルは実行可能ファイルと同じフォルダーにある必要があります。

直接パスを使用して競合を解決することもできます。

于 2012-09-14T13:22:13.293 に答える