【发布时间】:2015-09-02 23:02:43
【问题描述】:
我正在尝试为 Mac OS X 构建 OpenCV 3。我正在按照 http://www.pyimagesearch.com/2015/06/15/install-opencv-3-0-and-python-2-7-on-osx/ 的说明进行操作
我得到以下输出:
...
[ 50%] Linking CXX executable ../../bin/opencv_test_latentsvm
[ 50%] Built target opencv_test_latentsvm
[ 50%] Building CXX object modules/features2d/CMakeFiles/opencv_perf_features2d.dir/perf/perf_main.cpp.o
[ 50%] Building CXX object modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/src/binary_descriptor_matcher.cpp.o
[ 50%] Building CXX object modules/features2d/CMakeFiles/opencv_test_features2d.dir/test/test_keypoints.cpp.o
[ 50%] Building CXX object modules/features2d/CMakeFiles/opencv_perf_features2d.dir/perf/perf_orb.cpp.o
Scanning dependencies of target opencv_saliency
[ 50%] Building CXX object modules/saliency/CMakeFiles/opencv_saliency.dir/src/BING/CmFile.cpp.o
[ 50%] Building CXX object modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/src/draw.cpp.o
[ 50%] Building CXX object modules/features2d/CMakeFiles/opencv_test_features2d.dir/test/test_main.cpp.o
[ 50%] Building CXX object modules/saliency/CMakeFiles/opencv_saliency.dir/src/BING/CmShow.cpp.o
[ 50%] Building CXX object modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/src/LSDDetector.cpp.o
[ 50%] Linking CXX executable ../../bin/opencv_perf_features2d
[ 50%] Built target opencv_perf_features2d
[ 50%] Building CXX object modules/features2d/CMakeFiles/opencv_test_features2d.dir/test/test_matchers_algorithmic.cpp.o
[ 50%] Building CXX object modules/saliency/CMakeFiles/opencv_saliency.dir/src/BING/FilterTIG.cpp.o
Scanning dependencies of target opencv_text
[ 50%] Building CXX object modules/text/CMakeFiles/opencv_text.dir/src/erfilter.cpp.o
/Users/samadwara/opencv_contrib/modules/line_descriptor/src/LSDDetector.cpp:182:37: error: call to 'pow' is ambiguous
kl.lineLength = (float) sqrt( pow( extremes[0] - extremes[2], 2 ) + pow( extremes[1] - extremes[3], 2 ) );
^~~
/usr/include/c++/4.2.1/cmath:364:3: note: candidate function
pow(double __x, int __i)
^
/usr/include/c++/4.2.1/cmath:368:3: note: candidate function
pow(float __x, int __n)
^
/usr/include/c++/4.2.1/cmath:372:3: note: candidate function
pow(long double __x, int __n)
^
/usr/include/math.h:436:15: note: candidate function
extern double pow(double, double);
^
/usr/include/c++/4.2.1/cmath:356:3: note: candidate function
pow(float __x, float __y)
^
/usr/include/c++/4.2.1/cmath:360:3: note: candidate function
pow(long double __x, long double __y)
^
/Users/samadwara/opencv_contrib/modules/line_descriptor/src/LSDDetector.cpp:182:75: error: call to 'pow' is ambiguous
kl.lineLength = (float) sqrt( pow( extremes[0] - extremes[2], 2 ) + pow( extremes[1] - extremes[3], 2 ) );
^~~
/usr/include/c++/4.2.1/cmath:364:3: note: candidate function
pow(double __x, int __i)
^
/usr/include/c++/4.2.1/cmath:368:3: note: candidate function
pow(float __x, int __n)
^
/usr/include/c++/4.2.1/cmath:372:3: note: candidate function
pow(long double __x, int __n)
^
/usr/include/math.h:436:15: note: candidate function
extern double pow(double, double);
^
/usr/include/c++/4.2.1/cmath:356:3: note: candidate function
pow(float __x, float __y)
^
/usr/include/c++/4.2.1/cmath:360:3: note: candidate function
pow(long double __x, long double __y)
^
2 errors generated.
make[2]: *** [modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/src/LSDDetector.cpp.o] Error 1
make[1]: *** [modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
[ 50%] Building CXX object modules/features2d/CMakeFiles/opencv_test_features2d.dir/test/test_mser.cpp.o
[ 51%] Building CXX object modules/saliency/CMakeFiles/opencv_saliency.dir/src/BING/objectnessBING.cpp.o
[ 51%] Building CXX object modules/text/CMakeFiles/opencv_text.dir/src/ocr_hmm_decoder.cpp.o
[ 51%] Building CXX object modules/features2d/CMakeFiles/opencv_test_features2d.dir/test/test_nearestneighbors.cpp.o
[ 51%] Building CXX object modules/saliency/CMakeFiles/opencv_saliency.dir/src/BING/ValStructVec.cpp.o
[ 51%] Building CXX object modules/saliency/CMakeFiles/opencv_saliency.dir/src/motionSaliency.cpp.o
[ 51%] Building CXX object modules/text/CMakeFiles/opencv_text.dir/src/ocr_tesseract.cpp.o
[ 51%] Building CXX object modules/features2d/CMakeFiles/opencv_test_features2d.dir/test/test_orb.cpp.o
[ 51%] Building CXX object modules/saliency/CMakeFiles/opencv_saliency.dir/src/motionSaliencyBinWangApr2014.cpp.o
[ 51%] Building CXX object modules/saliency/CMakeFiles/opencv_saliency.dir/src/objectness.cpp.o
[ 51%] Linking CXX shared library ../../lib/libopencv_text.dylib
[ 51%] Built target opencv_text
[ 51%] Building CXX object modules/features2d/CMakeFiles/opencv_test_features2d.dir/test/test_rotation_and_scale_invariance.cpp.o
[ 51%] Building CXX object modules/saliency/CMakeFiles/opencv_saliency.dir/src/saliency.cpp.o
[ 51%] Building CXX object modules/saliency/CMakeFiles/opencv_saliency.dir/src/staticSaliency.cpp.o
[ 51%] Building CXX object modules/saliency/CMakeFiles/opencv_saliency.dir/src/staticSaliencySpectralResidual.cpp.o
[ 51%] Linking CXX shared library ../../lib/libopencv_saliency.dylib
[ 51%] Linking CXX executable ../../bin/opencv_test_features2d
[ 51%] Built target opencv_saliency
[ 51%] Built target opencv_test_features2d
make: *** [all] Error 2
~/opencv/build $
关于如何解决此问题的任何想法?如果一切都失败了,我将安装一个 Linux VM 并使用它。
【问题讨论】:
-
您应该将此报告给 OpenCV 3 开发人员,并检查您的编译器是否受支持。从您的错误消息
/usr/include/c++/4.2.1我推测您使用的是 gcc 4.2.1 版之类的东西?那太旧了,您可能需要升级。 -
我将如何更新它?我下载了 gcc 5.2.0 并替换了 /usr/bin/gcc(这可能是个坏主意),但它仍然尝试使用 /usr/include/c++/4.2.1。
-
我不知道你是如何下载它的......也许你应该使用自制软件或其他东西从源代码构建它以获得最佳效果。并且您需要确保在构建 OpenCV 时告诉它使用较新的版本
-
我使用 brew 下载了它,然后将文件从我的 homebrew 目录复制到 /usr/bin/gcc。我如何告诉 OpenCV 使用哪个?
-
(1) 不要从 brew 复制东西,只要在 brew 放置它们的地方使用它们 (2) 阅读一些关于 cmake 的文档,这样你就可以学习如何使用构建系统并告诉它什么编译器使用