두 시스템 모두 Linux에서 OpenCV를 사용해야합니다. 내 설정은 첫 번째 시스템에서 작동하지만 두 번째 시스템에서는 실패합니다. 두 시스템 모두 다음을 사용하여 사용자 지정 위치에 OpenCV를 설치했습니다.
cd myBuildDir
cmake -DWITH_VTK=OFF -DCMAKE_BUILD_TYPE=Release
-DCMAKE_INSTALL_PREFIX=~/Software/OpenCVLibs/opencv-3.1.0/release
~/Software/opencv-3.1.0
make && make install
디버그와 유사합니다. 디렉토리가 다릅니다. 하나는 내 랩톱에서 내 사용자와 함께 있고 다른 하나는 다중 사용자 시스템에서 다른 사용자와 함께 있습니다.
그런 다음 OpenCV 문서에 제공된 예제를 사용하여 설정을 테스트했습니다. http://docs.opencv.org/2.4/doc/tutorials/introduction/linux_gcc_cmake/linux_gcc_cmake.html
내 사용자 지정 OpenCV 위치를 사용하여 예제를 빌드하려면
cmake -DCMAKE_BUILD_TYPE=Release -DOpenCV_DIR=~/Software/OpenCVLibs
/opencv-3.1.0/release/share/OpenCV exampleSourceDir
이것은 첫 번째 시스템 (gcc 버전 5.3.0)에서 작동하지만 두 번째 시스템 (gcc 버전 4.6.3)에서는 실패합니다. 여기서 gcc 버전이 중요하다고 생각하지 말고 완전성을 위해 언급하십시오. 첫 번째 시스템에는 설치된 시스템 경로에 OpenCV가없고 두 번째 시스템에는있는 것과 관련이있을 수 있습니다. 그러나 빌드는 다음과 함께 실패합니다.
/usr/bin/cmake -E cmake_link_script CMakeFiles/DisplayImage.dir/link.txt --verbose=1
/usr/bin/c++ -O3 -DNDEBUG CMakeFiles/DisplayImage.dir/DisplayImage.cpp.o -o DisplayImage -rdynamic /home/me/Software/OpenCVLibs/opencv-3.1.0/release/lib/libopencv_videostab.so.3.1.0
/home/me/Software/OpenCVLibs/opencv-3.1.0/release/lib/libopencv_videoio.so.3.1.0
/home/me/Software/OpenCVLibs/opencv-3.1.0/release/lib/libopencv_video.so.3.1.0
/home/me/Software/OpenCVLibs/opencv-3.1.0/release/lib/libopencv_superres.so.3.1.0
/home/me/Software/OpenCVLibs/opencv-3.1.0/release/lib/libopencv_stitching.so.3.1.0
/home/me/Software/OpenCVLibs/opencv-3.1.0/release/lib/libopencv_shape.so.3.1.0
/home/me/Software/OpenCVLibs/opencv-3.1.0/release/lib/libopencv_photo.so.3.1.0
/home/me/Software/OpenCVLibs/opencv-3.1.0/release/lib/libopencv_objdetect.so.3.1.0
/home/me/Software/OpenCVLibs/opencv-3.1.0/release/lib/libopencv_ml.so.3.1.0
/home/me/Software/OpenCVLibs/opencv-3.1.0/release/lib/libopencv_imgproc.so.3.1.0
/home/me/Software/OpenCVLibs/opencv-3.1.0/release/lib/libopencv_imgcodecs.so.3.1.0
/home/me/Software/OpenCVLibs/opencv-3.1.0/release/lib/libopencv_highgui.so.3.1.0
/home/me/Software/OpenCVLibs/opencv-3.1.0/release/lib/libopencv_flann.so.3.1.0
/home/me/Software/OpenCVLibs/opencv-3.1.0/release/lib/libopencv_features2d.so.3.1.0
/home/me/Software/OpenCVLibs/opencv-3.1.0/release/lib/libopencv_core.so.3.1.0
/home/me/Software/OpenCVLibs/opencv-3.1.0/release/lib/libopencv_calib3d.so.3.1.0
/home/me/Software/OpenCVLibs/opencv-3.1.0/release/lib/libopencv_features2d.so.3.1.0
/home/me/Software/OpenCVLibs/opencv-3.1.0/release/lib/libopencv_ml.so.3.1.0
/home/me/Software/OpenCVLibs/opencv-3.1.0/release/lib/libopencv_highgui.so.3.1.0
/home/me/Software/OpenCVLibs/opencv-3.1.0/release/lib/libopencv_videoio.so.3.1.0
/home/me/Software/OpenCVLibs/opencv-3.1.0/release/lib/libopencv_imgcodecs.so.3.1.0
/home/me/Software/OpenCVLibs/opencv-3.1.0/release/lib/libopencv_flann.so.3.1.0
/home/me/Software/OpenCVLibs/opencv-3.1.0/release/lib/libopencv_video.so.3.1.0
/home/me/Software/OpenCVLibs/opencv-3.1.0/release/lib/libopencv_imgproc.so.3.1.0
/home/me/Software/OpenCVLibs/opencv-3.1.0/release/lib/libopencv_core.so.3.1.0 -Wl,-rpath,
/home/me/Software/OpenCVLibs/opencv-3.1.0/release/lib
CMakeFiles/DisplayImage.dir/DisplayImage.cpp.o: In function `main':
DisplayImage.cpp:(.text.startup+0xb8): undefined reference to `cv::imread(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int)'
DisplayImage.cpp:(.text.startup+0x1d7): undefined reference to `cv::namedWindow(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int)'
DisplayImage.cpp:(.text.startup+0x1f4): undefined reference to `cv::_InputArray::_InputArray(cv::Mat const&)'
DisplayImage.cpp:(.text.startup+0x223): undefined reference to `cv::imshow(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, cv::_InputArray const&)'
collect2: ld returned 1 exit status
이 호출에서 사용자 지정 위치의 라이브러리가 사용되어야한다고 생각합니다. 그렇다면 왜 실패합니까? 두 컴퓨터에서 opencv_test_imgcodecs를 실행했는데 제대로 작동합니다. 내 문제를 해결하는 방법에 대한 아이디어가 있습니까? 두 번째 시스템에 다른 OpenCV 설치 때문입니까? 도움을 주셔서 미리 감사드립니다!
CMakeList.txt를 변경하여 문제를 해결할 수 있습니다. 나는 알고있다
find_package( OpenCV HINTS "~/Software/OpenCVLibs/opencv-3.1.0/release/share/OpenCV/" )
그것에. 그 전에
find_package( OpenCV Required )
이제 더 이상 OpenCV_DIR을 지정할 필요가 없으며 다음과 같이 빌드 할 수 있습니다.
cmake -DCMAKE_BUILD_TYPE=Release exampleSourceDir
make
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다