OpenCV 2.4.3rc und CUDA 4.2: "OpenCV-Fehler: Keine GPU-Unterstützung"

Ich habe in diesem Album mehrere Screenshots hochgeladen:http://imgur.com/a/w4jHc

Ich versuche, die GPU in OpenCV in Visual Studio 2008 zum Laufen zu bringen. Ich führe einen der OpenCV-GPU-Beispielcodes aus, bgfg_segm.cpp. Wenn ich jedoch kompiliere (ohne Kompilierfehler), wird ein "OpenCV-Fehler: Keine GPU-Unterstützung" ausgegeben.

Windows 7, 32-BitVisual Studio 2008nVidia Quadro 1000M mit Treiberversion 301.27OpenCV 2.4.3rc (unter Verwendung der mitgelieferten vorkompilierten Bibliotheken)CUDA Toolkit 4.2, CUDA SDK.

Ich kann die EXE-Dateien in C: \ Programme \ NVIDIA Corporation \ NVIDIA GPU Computing SDK 4.2 \ C \ bin \ win32 \ Release fehlerfrei ausführen, sodass CUDA anscheinend funktioniert.

Ich hoffe wirklich, dass Sie helfen können, weil ich das Gefühl habe, hier etwas Offensichtliches zu vermissen. Alle mögliche Gedanken oder Vorschläge werden in hohem Grade geschätzt.

EDIT 9. November 2012:

Ich habe am Ende die Anweisungen von sgar91 befolgt und es scheint, als ob die Dinge jetzt funktionieren!

Eine Randnotiz: Wenn Du eintrittstEnvironment Variables Überprüfen Sie die Pfade für CUDA. Einer von mir hatte einen Backslash (\) zu viele vorbin so wasC:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v4.2\\bin;. Es gibt drei Verweise auf CUDA und sein SDK. Probieren Sie sie aus. Vielleicht war es nur ein einmaliger Zufall. Ich bin mir nicht sicher, ob das überhaupt von Bedeutung ist.

Noch eine Randnotiz: Ich habe Visual Studio 2010 Express installiert und beachte, dass die Anweisungen von sgar91 für Visual Studio 2010 (auch bekannt als "vc10") bestimmt sind. Es funktioniert nicht in Visual Studio 2008 (auch bekannt als "vc9") oder Visual Studio 2012 (auch bekannt als "vc11"), da OpenCV 2.4.3 für vc9 und vc11 (nur vc10) keine vorgefertigten lib-Dateien enthält. Beachten Sie auch, dass Sie unter 64-Bit-Windows alle X86-Pfade (32-Bit) in X64 (64-Bit) ändern sollten, wenn Sie seinem Handbuch folgen. In Visual Studio müssen Sie die Lösungsplattform von Win32 ändern (Dropdown-Menü oben, Mitte neben Debug oder Release) auf x64.

Noch eine Nebenbemerkung: OpenCV 2.4.3 unterstützt CUDA 4.2 (bzw. die Bibliotheken wurden mit CUDA 4.2 kompiliert). Wenn Sie CUDA 5.0 installieren, funktioniert dies nicht. Es wird eine Fehlermeldung ausgegeben. Ich kann mich nicht erinnern was. Wenn Sie CUDA 5.0 unbedingt benötigen, müssen Sie entweder warten, bis OpenCV es in zukünftigen Versionen enthält, oder Sie müssen Ihre eigenen Bibliotheken über CMake kompilieren.

Ich habe den folgenden Code ausgeführt (es ist vonHier, aber ich musste eine Zeile darin korrigieren, um es kompilieren zu lassen) und es kompilierte und zeigte das Bild, also würde ich erwarten, dass dies bedeutet, dass die Dinge funktionieren?

#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;

    }

Ich kann den Code in C: \ opencv \ samples \ gpu nicht zum Laufen bringen. Es wird kompiliert, aber dann wird ein Fehler ausgegeben. Aber scheiß drauf, das kriege ich irgendwie raus :)

Antworten auf die Frage(1)

Ihre Antwort auf die Frage