2013-03-01 38 views
11

Tôi vừa chạy cmake -D CMAKE_BUILD_TYPE=RELEASE .. từ OpenCV/build, và có sản lượng của tôi:Biên dịch OpenCV mà không cần 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 

Có điều là, biên soạn với gpu thất bại, có lẽ bởi vì máy tính của tôi không có một? (Đây là một ví dụ EC2).

make thất bại với một lỗi lẻ:

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 

Tôi đã thử bằng cách sử dụng lá cờ -DOPENCV_MODULES_DISABLED_USER="gpu" nhưng điều đó tạo ra sản lượng kỳ lạ với gpu liệt kê như to be builtdisabled.

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

Làm cách nào để biên dịch mà không có gpu?

+0

Lỗi là gì? – karlphillip

Trả lời

0

Tôi đã cố định vấn đề cụ thể này một cách khủng khiếp nhất:

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

Compilation sau đó hoàn tất ok. Đây không phải là giải pháp thực sự, vì vậy tôi muốn biết nếu có một sửa chữa thích hợp.

11

Hãy thử thêm -D WITH_CUDA=OFF vào dòng lệnh cmake của bạn.

+0

+1 Nhưng điều thú vị là nó đang cố gắng biên dịch với hỗ trợ GPU. – karlphillip

+0

Điều này dường như không hoạt động, khi xây dựng sạch, thêm 'WITH_CUDA = OFF' vào lệnh' cmake' vẫn còn trong 'gpu' vẫn được liệt kê là' được xây dựng'. – fredley

+0

Điều này làm việc cho tôi trên Ubuntu 16.04 LTS với opencv-2.4.9 :) –

20

Để vô hiệu hóa việc xây dựng một module cụ thể, sử dụng

-D BUILD_opencv_{modulename}=OFF 

Trong trường hợp này, sử dụng

-D BUILD_opencv_gpu=OFF 
+0

Tài liệu này được ghi ở bất cứ đâu trong tài liệu OpenCV – peter

4

này là do không có đủ bộ nhớ với EC2 của bạn. Tôi đã nhận được một lỗi tương tự (module khác nhau) với EC2/Micro chạy Ubuntu 12.10, nhưng nó đã được mịn đi thuyền trên một EC2/nhỏ.

2

Câu hỏi thực sự là, thiết bị của bạn hết bộ nhớ. Điều này xảy ra khi gcc không có đủ bộ nhớ. Tin tôi đi, vì tôi có cùng một vấn đề.

1

Đã xảy ra sự cố tương tự. Đó là vấn đề về bộ nhớ; tăng không gian hoán đổi đã sửa nó cho tôi. Mở một thiết bị đầu cuối và nhập thông tin này:

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

Sau đó tiếp tục với make.

Source

5

Đối với OpenCV 2.4.11 trên EC2, tôi đã phải bao gồm cả -D BUILD_opencv_gpu=OFF-D WITH_CUDA=OFF. Tôi cũng bao gồm -D WITH_1394=OFF để tránh cảnh báo trong python. Vì vậy:

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 là lỗi do libdc1394, được sử dụng để kiểm soát và nắm bắt luồng từ máy ảnh dựa trên IEEE 1394. Không có gì để làm với python, nếu bạn đang sử dụng Opencv trên máy tính xách tay, thay vì máy chủ, lỗi này rất có thể sẽ biến mất. – saurabheights

Các vấn đề liên quan