2013-04-02 17 views
5

ja dopiero się rozpoczął z OpenCV, i mam następujący przykładowy plik .cpp (od opencv.org):Gdzie/jak umieścić zbudować pliki w OpenCV

#include <stdio.h> 
#include <opencv2/opencv.hpp> 

using namespace cv; 

int main(int argc, char** argv) 
{ 
    Mat image; 
    image = imread(argv[1], 1); 

    if(argc != 2 || !image.data) 
    { 
     printf("No image data \n"); 
     return -1; 
    } 

    namedWindow("Display Image", CV_WINDOW_AUTOSIZE); 
    imshow("Display Image", image); 

    waitKey(0); 

    return 0; 
} 

i mam następujące CMakeList plik .cmake:

project(opencvTEST) 
cmake_minimum_required(VERSION 2.6 FATAL_ERROR) 

find_package(OpenCV REQUIRED) 

# Project Executable 
add_executable (test test.cpp) 
target_link_libraries(test ${OpenCV_LIBS}) 

mam Mac (OS 10.6.8) i mam zainstalowane OpenCV 2.4.3 z CMake i rozglądałem się wysokie i niskie i próbowałem wielu różnych rzeczy, aby to testuj program do kompilacji (używam wiersza poleceń - bez IDE), ale pojawia się następujący błąd kompilacji (wyraźnie, z powodu include oświadczenie nie działa prawidłowo):

test.cpp:3:30: error: opencv2/opencv.hpp: No such file or directory 
test.cpp:5: error: ‘cv’ is not a namespace-name 
test.cpp:5: error: expected namespace-name before ‘;’ token 
test.cpp: In function ‘int main(int, char**)’: 
test.cpp:9: error: ‘Mat’ was not declared in this scope 
test.cpp:9: error: expected `;' before ‘image’ 
test.cpp:10: error: ‘image’ was not declared in this scope 
test.cpp:10: error: ‘imread’ was not declared in this scope 
test.cpp:18: error: ‘CV_WINDOW_AUTOSIZE’ was not declared in this scope 
test.cpp:18: error: ‘namedWindow’ was not declared in this scope 
test.cpp:19: error: ‘imshow’ was not declared in this scope 
test.cpp:21: error: ‘waitKey’ was not declared in this scope 

mam folder o nazwie opencv2 w tym samym katalogu co test.cpp i opencv.hpp jest w opencv2, więc nie rozumiem, dlaczego to nie jest znalezienie go. Jakieś pomysły?

Co więcej, gdzie OpenCV spodziewa się umieścić pliki źródłowe (.cpp itp.)?

+0

Dość ciekawe ... Nie byłem świadomy różnicy pomiędzy '< > 'i' "" 'dla instrukcji' # include'. Czy wiesz, czy istnieje powód do kopiowania 'opencv' i' opencv2' (folderów z plikami nagłówkowymi) do katalogu '/ usr/include'? – MuffinTheMan

Odpowiedz

3

zapomni się dodać w swoim CMakeLists.txt

include_directories(${OpenCV_INCLUDE_DIRS}) 

po find_package OpenCV (wymagane)

+0

Dzięki, po prostu dodałem go przed 'find_package ...', ale to nie ma znaczenia. – MuffinTheMan

+0

spróbuj dodać po zamiast –

+0

Nadal nie działa, niestety.Czy wiesz, że jeśli istnieje jakiś katalog OpenCV oczekuje, że umieści mój kod źródłowy? – MuffinTheMan

0

Jest jeszcze jedna zawierać folder o ścieżce: OpenCV \ build \ include. Kompletne nagłówki tam są i możesz ustawić OpenCV_INCLUDE_DIR do tego katalogu

+1

To chyba nic dla mnie nie robi, niestety. – MuffinTheMan

1

Chciałbym wiedzieć, co dokładnie było powyżej, ale mogę tylko zgadywać, że miało to coś wspólnego z faktem, że próbowałem pracować z OpenCV 2.4.3 z już zainstalowanym OpenCV 2.4.4 (Zgaduję, że to spowodowało pewne konflikty).

Mam OpenCV 2.4.4 pracującego na moim komputerze, usuwając OpenCV 2.4.3 (po prostu uruchomiłem rm -rf w katalogu, w którym go umieściłem) i odinstalowałem 2.4.4 (używając homebrew: brew uninstall opencv). Po zrobieniu tych czynności, aby wyczyścić rzeczy, wpadłem następujące polecenia (trzeba mieć homebrew):

$ brew update #just in case you're missing updates 
$ brew tap homebrew/science #skip this if you already have the science formulae 
$ brew install opencv #this took about 15 minutes 

Wreszcie następuje this tutorial i voila, to działa! Piszę to do pracy z nowym oprogramowaniem, które nie było intuicyjne, frustrujące i próbowałem uruchomić różne sposoby na OpenCV. Wydaje mi się, że wszystko to było związane z instalacją, o której nie wiedziałem, co (jak sądzę) spowodowało poważne problemy. Czy jestem jedyną osobą, która tak ciężko pracowała przy OpenCV?

+0

Nie, nie jesteś jedyny :)) ... Tylko JEDNA instalacja, mam podobne problemy z wypróbowaniem tego w Fedorze. Myślenie o używaniu naparu na moim Macu - dobra sugestia. To znaczy, że będę miał trzy kopie rzeczy opencv - i, tak jak w punkcie postu, nadal nie wiesz, gdzie opencv naprawdę chce src :)) ... czy kiedykolwiek to wymyśliłeś ? (Próbuję CDT w czasie zaćmienia i spróbujmy ponownie 184 --- wygląda na to, że mam sposób, aby przejść do 273 prób.) LOL "Ta dwieście siedemdziesiąt czwarta próba jest urokiem"? –

+0

Haha, 273 mogło być trochę przesadzone;) Chciałbym móc powiedzieć, gdzie powinny być pliki src, ale mój zespół zakończył porzucenie OpenCV i użycie MATLAB zamiast tego. – MuffinTheMan

+0

arrrggg ... wypróbowany napar wczoraj ... nie powiodło się o% 73 w: - \ MATLAB eh? Czasem lepiej zapłacić gotówką niż mieć bóle głowy z otwartym dostępem. Gdybym mógł sobie pozwolić na koncercie MATLABa lub Wolframa, też wyrzuciłbym openCV za burtę. Dzięki za odpowiedź! Teraz, gdzie zostawiłem ten przypadek Excedrin Extra Strength? ... Hm –

5

Miałem dokładnie ten sam problem. Pobiegłem ten sam przykład z samouczka OpenCV i dostał ten sam błąd

error: ‘CV_WINDOW_AUTOSIZE’ was not declared in this scope 

Rozwiązałem to przez dodanie nagłówka:

#include <opencv/highgui.h> 
Powiązane problemy