3

私はOpenCVのスターターです。私のプログラミング環境は VC++ Express 2010 + OpenCV 2.4.2 + Win 7 64 ビットです。

VC++ とパスで純粋に 32 ビット構成を使用しています。

次のコードを入力します。

#include "opencv2\highgui\highgui.hpp"
#include "opencv2\core\core.hpp"
using namespace cv;

int main(int argc, char** argv) {
    char* imgPath = "logo.png";
    Mat img = imread(imgPath);
    namedWindow( "Example1", WINDOW_AUTOSIZE);
    imshow("Example1", img);
    waitKey(0);
    return 0;
}

次に、コンパイルして実行します。ウィンドウが表示されますが(画像はありません)、これが表示されました(実行時エラーですか?)

Unhandled exception at 0x770515de in Helloworld2.exe: Microsoft C++ exception: cv::Exception at memory location 0x001ef038..

次に、imread を cvLoadImage に変更すると、エラーなく動作します。

誰かが何が悪いのか教えてもらえますか?

4

5 に答える 5

2

私はあなたが与えたコードを試しました。私のOpenCVのインストールでは完全に正常に動作します。

ただし、次の行で警告が表示されます。

char* imgPath = "logo.png";

main.cpp:6:21: warning: deprecated conversion from string constant to 'char*' [-

書き込み文字列]

コードをクラッシュさせることは深刻なことではないと思いますが、コンパイルに VC++ を使用していないため、問題になる可能性があります。

これが問題であるかどうかを確認しようとすることができるのはimgPath、文字列を直接置き換えることです。そのため、コードは次のようになります

Mat img = imread("logo.png"); 
于 2012-08-16T16:23:15.440 に答える
0

との違いはcvLoadImageimreadopencv のドキュメントで確認できます。

C++: Mat imread( const string& filename , int flags=1 )

C: CvMat* cvLoadImageM( const char* filename , int iscolor=CV_LOAD_IMAGE_COLOR )

const char *しかし、 からへの暗黙の変換がありstringます。masad が指摘したように、この変換は非推奨であるため、コンパイラに大きく依存します。

うまくいくようcvLoadImageに、コードを次のように変更する必要があるようです。

#include "opencv2\highgui\highgui.hpp"
#include "opencv2\core\core.hpp"
#include <string>
using namespace cv;

int main(int argc, char** argv) {
    std::string imgPath("logo.png");
    Mat img = imread(imgPath);
    namedWindow( "Example1", WINDOW_AUTOSIZE);
    imshow("Example1", img);
    waitKey(0);
    return 0;
}

Visual Studio の C++ インターフェイスにはいくつかの問題がありましたが、それが機能するかどうかを確認してみてください。

于 2012-08-17T11:14:19.413 に答える
0
于 2013-11-16T14:23:40.407 に答える
0

私は同じ問題を抱えていて、Installing OpenCV 2.4.3 in Visual C++ 2010 Expressに出くわしました。リンカーの依存関係を追加するときに、更新されたライブラリのセット *d.lib を使用することが言及されています。試してみたところ、C++ インターフェイスが機能しました。これが一般的に当てはまるかどうかはわかりません。64 ビット Windows マシンで OpenCV 2.4 と Visual Studio 2010 を使用しています。

于 2013-01-24T23:28:12.903 に答える