2013-04-08 24 views
39

To pytanie musi być powtórzone wiele razy, ale po prostu nie działa, a czasami nadal pozostaje bez odpowiedzi. Źródłami informacji są głównie tych
http://www.laganiere.name/opencvCookbook/chap1s1_2.shtml
http://www.youtube.com/watch?v=dgcXYQijV6c
Jak połączyć opencv w QtCreator i korzystać z biblioteki Qt

Jest to podsumowanie tego, co myślę, że jeden powinien/może zrobić. (A teraz to działa dla mnie.) Mam nadzieję, że wspomniałem o wszystkim od samego początku, celem jest napisanie bardzo przejrzystego samouczka.

Instalacja OpenCV dla Qt Creator

  1. już zainstalowany MS Visual Studio 2010 Professional. (Mam darmową licencję jako student) - myślę, że to nie jest konieczne, wystarczy wspomnieć
  2. Download: Qt 5.0.1 dla Windows 32-bit (MinGW 4.7, 823 MB)
    2,1 Instalacja: Ostrzeżenie, wszystko, czego używa Qt (np. OpenCV), musi znajdować się w katalogach, które nie zawierają białych znaków w swoich nazwach. - "Program Files" jest niepoprawny. (Ale nie chcę, aby różne pliki programu gromadziły się bezpośrednio w C, więc utworzyłem tylko folder "Programy", w którym wszystko, co ważne jest zainstalowane)
  3. Pobierz: cmake-2.8.10.2-win32-x86 .exe - Instalacja dla wszystkich użytkowników (może to być w Program Files)
  4. download: OpenCV-2.4.0.exe, wyciąg do: C: \ Programy \ opencv24 - będzie to stworzyć dir „OpenCV "; dodaj kolejny folder "opencv_bin". Teraz wygląda to tak:
    C: \ Programs \ opencv24 \ OpenCV *
    C: \ Programy \ opencv24 \ opencv_bin
  5. Set środowiskowej PATH zmiennej, tak że być linkiem do MinGW kompilatora . na przykład C: \ Programs \ Qt \ Qt5.0.1 \ Tools \ MinGW \ bin;
  6. start cmake-gui.exe
    6,1 kod źródłowy: ustawić domyślny dir dla OpenCV; C: \ Programs \ opencv24 \ opencv
    6.2 pliki binarne: ustaw katalog opencv_bin; C: \ Programy \ copencv24 \ opencv_bin
    6,3 kliknij Konfiguruj:
    • Wybierz MinGW Makefile i Określ natywne kompilatory, kliknij obok
    • Pole C jest dla gcc.exe; C: /Programy/Qt/Qt5.0.1/Tools/MinGW/bin/gcc.exe
    • Pole C++ dla g ++. Exe; C. /Programs/Qt/Qt5.0.1/Tools/MinGW/bin/g ++ exe
    • Pole Fortran może być pusta, kliknij przycisk Zakończ
    6.4 Pojawi się wiele czerwonych linii. Do pola wyszukiwania wprowadź kolejno: WITH_QT, WITH_TBB, WITH_IPP, WITH_CUDA, CMAKE_BUILD_TYPE
    • WITH_QT - należy wybrać.
    • WITH_TBB, WITH_IPP, WITH_CUDA - musi być odznaczone
    • CMAKE_BUILD_TYPE - kliknij i wprowadź tekst "Debugowanie" (bez cudzysłowów).
    • Wyczyść tekst z pola wyszukiwania.
    6,5 kliknij Konfiguruj skonfigurować i zachować klikając aż wszystkie czerwone linie zostaną usunięte, a następnie kliknij generować i bliskącmake-gui.exe
  7. Przejdź do wiersza polecenia (~) terminala, cd do katalogu, gdzie są buduje (opencv_bin) i rodzaj mingw32-make
  8. Gdy proces kończy się po długim czasie, typ mingw32-make install
  9. Dodaj do zmiennej PATH ścieżkę do Qt Creator/bin C: \ Programy \ Qt \ Qt5.0.1 \ Tools \ bin \ Qt Creator

Teraz stworzyłem nową aplikację konsolową w QtCreator.

//cvHello.pro 
QT  += core 
QT  -= gui 

TARGET = cvHello 
CONFIG += console 
CONFIG -= app_bundle 

TEMPLATE = app 
INCLUDEPATH += C:/Programs/opencv24/opencv_bin2/install/include 
LIBS += "C:/Programs/opencv24/opencv_bin2/bin/*.dll" 

SOURCES += main.cpp 
OTHER_FILES += \ 
    img.JPG 

A głównym pliku:

//main.cpp 
#include <iostream> 
#include "opencv2/core/core.hpp" 
#include "opencv2/highgui/highgui.hpp" 
#include "opencv/cv.h" 

using namespace std; 

int main() 
{ 
    cout << "Hello World!" << endl; 

    cv::Mat mat; 
    mat = cv::imread("img.JPG"); 
    cvNamedWindow("hello"); 
    cv::imshow("hello",mat); 

    cvWaitKey(0); 

    return 0; 
} 
+0

Definiuję tutaj LIBS, aby używać katalogu opencv_bin2, ponieważ kilka razy przebudowałem opencv. –

+3

Mój projekt [cvImage] (https://github.com/karlphillip/GraphicsProgramming/tree/master/cvVideo) jest dostępny na GitHub i pokazuje, jak zbudować aplikację wieloplatformową z Qt/OpenCV. Sprawdź plik **. Pro **. – karlphillip

+0

Musiałem użyć "CMAKE_BUILD_TYPE = Release" zamiast Debugowania, jak podano w [tutaj] (http://www.laganiere.name/opencvCookbook/chap1s1_2.shtml) - twoje pierwsze źródło. – inblueswithu

Odpowiedz

10

Wreszcie zaczynam być szczęśliwy. Podczas dostosowywania tego pytania musiałem wypróbować wszystkie sposoby, jak zdefiniować LIBS. Zamieszczanie ich ręcznie pomogło, początkowo napisałem je w jakiś sposób niesłusznie.

Jak to działa w końcu:

LIBS += -LC:\\Programs\\opencv24\\opencv_bin2\\bin \ 
    libopencv_core240d \ 
    libopencv_highgui240d \ 
    libopencv_imgproc240d \ 
    libopencv_features2d240d \ 
    libopencv_calib3d240d \ 

Btw jeśli zrobiłem żadnych błędów gramatycznych, przykro mi za mój angielski. :)

+0

Nadal nie wiem, co było nie tak z oryginalnym LIBS + = "C:/Programs/opencv24/opencv_bin2/bin/*. dll" –

+0

musisz dodać .libs, ponieważ to zawierają informacje o funkcjach wewnątrz DLL, a ta informacja jest potrzebna podczas budowania projektu, więc twój exe będzie działał, następnie sprawdź te informacje, a następnie załaduj potrzebną bibliotekę DLL. –

+0

Wajdy: Czy nie masz na myśli rozszerzenia .lib lub .libs, ale raczej jakiekolwiek pliki z biblioteki katalogowej? Prawdopodobnie te w opencv_bin/lib i nie opencv_bin/install/lib.Ale kiedy po prostu zmienię -LC: \\ Programs \\ opencv24 \\ opencv_bin2 \\ bin \ ... na -LC: \\ Programs \\ opencv24 \\ opencv_bin2 \\ lib \ ... to nie działa . Czy mówisz, że rozwiązanie z \\ bin \ ... jest błędne? –

Powiązane problemy