gpt4 book ai didi

运行 make CentOS 时出现 OpenCV 错误

转载 作者:太空宇宙 更新时间:2023-11-03 20:57:15 25 4
gpt4 key购买 nike

我尝试在 CentOS 5.8 上安装 OpenCV 2.4.2,但出现以下错误

[ 34%] Built target opencv_test_highgui
[ 34%] Building CXX object modules/features2d/CMakeFiles/opencv_features2d.dir/src/freak.cpp.o
/home/jtrinidad/Downloads/OpenCV-2.4.2/modules/core/include/opencv2/core/core.hpp:1286: warning: ‘class cv::_InputArray’ has virtual functions but non-virtual destructor
/home/jtrinidad/Downloads/OpenCV-2.4.2/modules/core/include/opencv2/core/core.hpp:1365: warning: ‘class cv::_OutputArray’ has virtual functions but non-virtual destructor
/home/jtrinidad/Downloads/OpenCV-2.4.2/modules/features2d/src/freak.cpp: In member function ‘virtual void cv::FREAK::computeImpl(const cv::Mat&, std::vector<cv::KeyPoint, std::allocator<cv::KeyPoint> >&, cv::Mat&) const’:
/home/jtrinidad/Downloads/OpenCV-2.4.2/modules/features2d/src/freak.cpp:367: error: shift must be an immediate
make[2]: *** [modules/features2d/CMakeFiles/opencv_features2d.dir/src/freak.cpp.o] Error 1
make[1]: *** [modules/features2d/CMakeFiles/opencv_features2d.dir/all] Error 2
make: *** [all] Error 2

我在 cmake 上运行了以下命令

 cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D BUILD_EXAMPLES=OFF WITH_CUDA=OFF ..     

谢谢。

最佳答案

问题已解决。

我将以下补丁应用于 ~/Downloads/OpenCV-2.4.2/modules/features2d/src/freak.cpp

diff -crB OpenCV-2.4.2.orig/modules/features2d/src/freak.cpp OpenCV-2.4.2/modules/features2d/src/freak.cpp
*** OpenCV-2.4.2.orig/modules/features2d/src/freak.cpp 2012-07-25 09:54:50.000000000 -0400
--- OpenCV-2.4.2/modules/features2d/src/freak.cpp 2012-07-24 10:34:57.000000000 -0400
***************
*** 364,370 ****
__m128i workReg = _mm_min_epu8(operand1, operand2); // emulated "not less than" for 8-bit UNSIGNED integers
workReg = _mm_cmpeq_epi8(workReg, operand2); // emulated "not less than" for 8-bit UNSIGNED integers

! workReg = _mm_and_si128(_mm_srli_epi16(binMask, m), workReg); // merge the last 16 bits with the 128bits std::vector until full
result128 = _mm_or_si128(result128, workReg);
}
(*ptr) = result128;
--- 364,404 ----
__m128i workReg = _mm_min_epu8(operand1, operand2); // emulated "not less than" for 8-bit UNSIGNED integers
workReg = _mm_cmpeq_epi8(workReg, operand2); // emulated "not less than" for 8-bit UNSIGNED integers

! // merge the last 16 bits with the 128bits std::vector until full
! __m128i shiftedMask;
! switch(m) {
! case 8:
! shiftedMask = _mm_srli_epi16(binMask, 8);
! break;
! case 7:
! shiftedMask = _mm_srli_epi16(binMask, 7);
! break;
! case 6:
! shiftedMask = _mm_srli_epi16(binMask, 6);
! break;
! case 5:
! shiftedMask = _mm_srli_epi16(binMask, 5);
! break;
! case 4:
! shiftedMask = _mm_srli_epi16(binMask, 4);
! break;
! case 3:
! shiftedMask = _mm_srli_epi16(binMask, 3);
! break;
! case 2:
! shiftedMask = _mm_srli_epi16(binMask, 2);
! break;
! case 1:
! shiftedMask = _mm_srli_epi16(binMask, 1);
! break;
! case 0:
! shiftedMask = _mm_srli_epi16(binMask, 0);
! break;
! default:
! throw "shifting less than 0";
! }
! workReg = _mm_and_si128(shiftedMask, workReg);
!
result128 = _mm_or_si128(result128, workReg);
}
(*ptr) = result128;

关于运行 make CentOS 时出现 OpenCV 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11725136/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com