2013-03-01 19 views
11

Ho appena eseguito cmake -D CMAKE_BUILD_TYPE=RELEASE .. da OpenCV/build, ed ho ottenuto nella mia uscita:Compila OpenCV senza GPU?

-- OpenCV modules: 
--  To be built:     core imgproc flann highgui features2d calib3d ml video 
            objdetect contrib nonfree gpu legacy photo python 
            stitching ts videostab 
--  Disabled:     - 
--  Disabled by dependency:  - 
--  Unavailable:     androidcamera java world 

Il fatto è che, con la compilazione gpu non riesce, forse perché la mia macchina non ne ha uno? (È un'istanza EC2).

make fallisce con un errore strano:

Scanning dependencies of target opencv_test_gpu 
[ 72%] Building CXX object modules/gpu/CMakeFiles/opencv_test_gpu.dir/test/test_gpumat.cpp.o 
[ 72%] Building CXX object modules/gpu/CMakeFiles/opencv_test_gpu.dir/test/utility.cpp.o 
[ 73%] Building CXX object modules/gpu/CMakeFiles/opencv_test_gpu.dir/test/test_filters.cpp.o 
[ 73%] Building CXX object modules/gpu/CMakeFiles/opencv_test_gpu.dir/test/test_copy_make_border.cpp.o 
[ 73%] Building CXX object modules/gpu/CMakeFiles/opencv_test_gpu.dir/test/main.cpp.o 
[ 73%] Building CXX object modules/gpu/CMakeFiles/opencv_test_gpu.dir/test/test_threshold.cpp.o 
[ 73%] Building CXX object modules/gpu/CMakeFiles/opencv_test_gpu.dir/test/test_video.cpp.o 
[ 73%] Building CXX object modules/gpu/CMakeFiles/opencv_test_gpu.dir/test/test_core.cpp.o 
c++: internal compiler error: Killed (program cc1plus) 
Please submit a full bug report, 
with preprocessed source if appropriate. 
See <file:///usr/share/doc/gcc-4.6/README.Bugs> for instructions. 
make[2]: *** [modules/gpu/CMakeFiles/opencv_test_gpu.dir/test/test_core.cpp.o] Error 4 
make[1]: *** [modules/gpu/CMakeFiles/opencv_test_gpu.dir/all] Error 2 
make: *** [all] Error 2 

Ho provato con la bandiera -DOPENCV_MODULES_DISABLED_USER="gpu" ma che produce output strano con gpu elencati come to be builtedisabled.

-- OpenCV modules: 
--  To be built:     core imgproc flann highgui features2d calib3d ml video objdetect contrib nonfree gpu legacy photo python stitching ts videostab 
--  Disabled:     gpu 
--  Disabled by dependency:  - 
--  Unavailable:     androidcamera java world 

Come si compila senza gpu?

+0

Qual è l'errore? – karlphillip

risposta

0

ho fissato questo particolare problema nel modo più orribile:

touch modules/gpu/CMakeFiles/opencv_test_gpu.dir/test/test_core.cpp.o 
make 

compilazione completa quindi OK. Questa non è davvero una soluzione, quindi mi piacerebbe sapere se c'è una soluzione adeguata.

11

Prova ad aggiungere -D WITH_CUDA=OFF alla riga di comando cmake.

+0

+1 Ma è interessante che stia cercando di compilare con il supporto della GPU. – karlphillip

+0

Questo non sembra funzionare, in una build pulita, l'aggiunta di 'WITH_CUDA = OFF' al comando' cmake' porta ancora a 'gpu' ancora elencato come' to be built'. – fredley

+0

Questo ha funzionato per me su Ubuntu 16.04 LTS con opencv-2.4.9 :) –

20

Per disabilitare la costruzione di un modulo specifico, utilizzare

-D BUILD_opencv_{modulename}=OFF 

In questo caso, utilizzare

-D BUILD_opencv_gpu=OFF 
+0

È documentato ovunque all'interno dei documenti OpenCV – peter

4

questo è causato dal non avere abbastanza memoria con l'istanza EC2. Ho ottenuto un errore simile (modulo diverso) con un EC2/Micro con Ubuntu 12.10, ma era scorrevole su EC2/Small.

2

La vera domanda è che il dispositivo si esaurisce. Questo accade quando gcc non ha memoria sufficiente. Fidati di me, visto che ho avuto lo stesso problema.

1

Aveva lo stesso problema. È un problema di memoria; aumentando lo spazio di swap l'ho fissato per me. Aprire un terminale e immettere:

free 
dd if=/dev/zero of=/var/swap.img bs=1024k count=1000 
mkswap /var/swap.img 
swapon /var/swap.img 
free 

Quindi procedere con il make.

Source

5

Per OpenCV 2.4.11 su EC2, ho dovuto includere sia -D BUILD_opencv_gpu=OFF e -D WITH_CUDA=OFF. Ho anche incluso -D WITH_1394=OFF per evitare un avvertimento in python. Quindi:

cd opencv-2.4.11/ 
mkdir release 
cd release/ 
cmake -D BUILD_opencv_gpu=OFF -D WITH_CUDA=OFF -D WITH_1394=OFF -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local .. 
make 
sudo make install 
+1

1394 è un errore dovuto a libdc1394, che viene utilizzato per controllare e acquisire flussi da fotocamere basate su IEEE 1394. Niente a che vedere con Python, se usi Opencv sul laptop, invece del server, questo errore molto probabilmente andrebbe via. – saurabheights