7

このアルバムにいくつかのスクリーンショットをアップロードしました:http://imgur.com/a/w4jHc

Visual Studio 2008のOpenCVでGPUを起動して実行しようとしています。OpenCVGPUサンプルコードの1つ、bgfg_segm.cppを実行しています。ただし、(コンパイルエラーなしで)コンパイルすると、「OpenCVエラー:GPUサポートなし」がスローされます。

  • Windows 7、32ビット
  • Visual Studio 2008
  • nVidia Quadro 1000M、ドライバーバージョン301.27
  • OpenCV 2.4.3rc(付属のプリコンパイル済みライブラリを使用)
  • CUDA Toolkit 4.2、CUDASDK。

C:\ ProgramData \ NVIDIA Corporation \ NVIDIA GPU Computing SDK 4.2 \ C \ bin \ win32 \ Releaseで.exeファイルをエラーなしで実行できるため、CUDAが機能しているように見えます。

ここで明らかな何かが欠けているに違いないと思うので、あなたが助けてくれることを本当に望んでいます。どんな考えや提案も大歓迎です。

2012年11月9日編集:

sgar91の指示に従うことになりましたが、現在は機能しているようです。

補足:入力するときEnvironment Variablesは、CUDAのパスを確認してください。私の1人は、このよう\に前に1つのバックスラッシュ()が多すぎました。CUDAとそのSDKへの参照は3つあるので、それらをチェックしてください。多分それは一度だけのまぐれでした。これが重要かどうかはまったくわかりません。binC:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v4.2\\bin;

もう1つの補足: Visual Studio 2010 Expressをインストールしましたが、sgar91の手順はVisual Studio 2010(別名「vc10」)を対象としていることに注意してください。vc9およびvc11(vc10のみ)用のOpenCV 2.4.3でビルド済みのlibファイルがないため、Visual Studio 2008(別名「vc9」)またはVisual Studio 2012(別名「vc11」)では機能しません。また、64ビットWindowsを使用している場合は、ガイドに従うときに、代わりにすべてのX86パス(32ビット)をX64(64ビット)に変更する必要があります。VisualStudioでは、ソリューションプラットフォームをWin32から変更する必要があります。 (上部のドロップダウンメニュー、[デバッグ]または[リリース]の横の中央)x64へ。

さらにもう1つの補足:OpenCV2.4.3はCUDA4.2をサポートします(つまり、ライブラリはCUDA 4.2でコンパイルされています)。CUDA 5.0をインストールすると、機能しません。エラーメッセージをスローします。どちらか思い出せない。どうしてもCUDA5.0が必要な場合は、OpenCVが将来のバージョンに含めるのを待つか、CMakeを介して独自のライブラリをコンパイルする必要があります。

以下のコードを実行し(ここからですが、コンパイルするには1行を修正する必要がありました)、コンパイルして画像を表示したので、これは問題がないことを意味しますか?

#ifdef _DEBUG
#pragma comment(lib,"opencv_gpu243d")
#pragma comment(lib,"opencv_core243d")
#pragma comment(lib,"opencv_highgui243d")
#else
#pragma comment(lib,"opencv_core243")
#pragma comment(lib,"opencv_highgui243")
#pragma comment(lib,"opencv_gpu243")
#endif

    #include <iostream>
    #include "opencv2/opencv.hpp"
    #include "opencv2/gpu/gpu.hpp"

    int main (int argc, char* argv[])
    {
        try
        {
            cv::Mat src_host = cv::imread("file.png", CV_LOAD_IMAGE_GRAYSCALE);
            cv::gpu::GpuMat dst, src;
            src.upload(src_host);

            cv::gpu::threshold(src, dst, 128.0, 255.0, CV_THRESH_BINARY);

            cv::Mat result_host(dst);
            //cv::Mat result_host = dst;         //old line commented out
            cv::imshow("Result", result_host);   //new line added by me
            cv::waitKey();
        }
        catch(const cv::Exception& ex)
        {
            std::cout << "Error: " << ex.what() << std::endl;
        }
        return 0;

    }

C:\ opencv \ samples\gpuのコードを動作させることができません。コンパイルしますが、エラーをスローします。しかし、それをねじ込みます、私はどういうわけかそれを理解します:)

4

1 に答える 1

10

GPUサポートなしでコンパイルされたOpenCVバイナリを使用しています。

C:\opencv\build\x86\...GPUサポートなしです。

フォルダにあるバイナリとlibファイルを使用する必要がありbuild\gpuます。

C:\opencv\build\gpu\x86\...GPUをサポートしています。

アップデート:

手順:

Visual Studio 2010で、プロジェクトのプロパティに移動します。VC ++ディレクトリには、次のページが表示されます。

[ディレクトリを含める]テキストボックスにOpenCVincludeフォルダーのパスを追加します。複数のパスがセミコロンで区切られ、どのパスにもスペースがないことを確認してください。

同様に、ライブラリディレクトリlibテキストボックスにGPUバージョンと非GPUバージョンの両方のOpenCVフォルダーのパスを追加します。(セミコロンを忘れないでください)

重要:ボックスにパスを書き込むときは、最初にGPUパスを書き込み、その後に非GPUパスを書き込みます。

ここに画像の説明を入力してください

bin次のステップは、OpenCVのフォルダーのパスを追加することです。ただし、Visual Studioではなく、Path以下に示すように環境変数にあります。

ここに画像の説明を入力してください

  • 右クリックMy Computer
  • プロパティに移動
  • Environment Variablesセクションに移動
  • システム変数を編集するPath
  • パスに追加しC:\OpenCV\build\gpu\x86\vc10\bin ます。 C:\OpenCV\build\x86\vc10\bin異なる値をセミコロンで区切ることを忘れないでください。また---> GPUが最初になります。
  • 保存して終了。

VisualStudioを再起動します。リンカと#includeディレクティブがOpenCVライブラリを認識するようになります。GPUライブラリのパスも追加したので、OpenCVで完全なGPUサポートを利用できるようになります。

OpenCVのGPU機能を使用するには、次のことを行う必要があります。

  • #include opencv2/gpu/gpu.hpp
  • プロジェクトプロパティのセクションの[追加の依存関係]フィールドで、opencv_gpu243d.libデバッグ構成またはリリース構成を指定します。opencv_gpu243.libLinker->Input

いくつかの追加情報:

Visual Studioでは、プロジェクトプロパティでライブラリを指定する代わりに、ライブラリをリンクする簡単な方法があります。

コードの最初に次の行を記述してください。

#ifdef _DEBUG
#pragma comment(lib,"opencv_core243d")
#pragma comment(lib,"opencv_highgui243d")
#else
#pragma comment(lib,"opencv_core243")
#pragma comment(lib,"opencv_highgui243")
#endif
于 2012-11-05T11:28:42.123 に答える