Скомпилировать OpenCV без GPU?

Я только что запустил cmake -D CMAKE_BUILD_TYPE=RELEASE .. из OpenCV/build и получил свой вывод:

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

Дело в том, что компиляция с gpu терпит неудачу, может быть, потому что у моей машины ее нет? (Это экземпляр EC2).

make терпит неудачу с нечетной ошибкой:

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

Я пробовал использовать флаг -DOPENCV_MODULES_DISABLED_USER="gpu", но это создает странный вывод с gpu, обозначенным как to be built и disabled.

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

Как скомпилировать без gpu?

Ответ 1

Я исправил эту конкретную проблему самым ужасным образом:

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

Затем компиляция завершается нормально. На самом деле это не решение, поэтому я хотел бы знать, есть ли правильное исправление.

Ответ 2

Чтобы отключить создание определенного модуля, используйте

-D BUILD_opencv_{modulename}=OFF

В этом случае используйте

-D BUILD_opencv_gpu=OFF

Ответ 3

Попробуйте добавить -D WITH_CUDA=OFF в свою командную строку cmake.

Ответ 4

Для OpenCV 2.4.11 на EC2 мне пришлось включить как -D BUILD_opencv_gpu=OFF, так и -D WITH_CUDA=OFF. Я также включил -D WITH_1394=OFF, чтобы избежать предупреждения в python. Итак:

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

Ответ 5

Это вызвано нехваткой памяти с вашим экземпляром EC2. Я получил аналогичную ошибку (другой модуль) с EC2/Micro, работающим под управлением Ubuntu 12.10, но он был плавным на EC2/Small.

Ответ 6

Реальный вопрос: ваше устройство исчерпало память. Это происходит, когда gcc не хватает памяти. Поверьте мне, поскольку у меня была такая же проблема.

Ответ 7

Была та же проблема. Это проблема памяти; увеличение пространства подкачки фиксировало это для меня. Откройте терминал и введите следующее:

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

Затем перейдите к make.

Источник