Ubuntu20.04+Cuda 11.2安装OpenCV2.4.8 问题记录
创始人
2025-05-31 01:04:43
0

cmake 过程

cmake 命令:

cmake -DWITH_QT=ON -DWITH_OPENGL=ON -DFORCE_VTK=ON -DWITH_TBB=ON -DWITH_GDAL=ON -D CUDA_nppicom_LIBRARY=/usr/local/cuda/lib64/libnppicc.so -DWITH_XINE=ON -DBUILD_EXAMPLES=ON -DENABLE_PRECOMPILED_HEADERS=OFF -DCMAKE_BUILD_TYPE=RELEASE -D CUDA_GENERATION=Kepler -D WITH_FFMPEG=OFF -Wno-dev -Wno-error=deprecated-declarations -Wno-deprecated-declarations -Wno-deprecated -Wno-deprecated-copy -Wno-class-memaccess .. 
  1. videodev.hvideodev2.hvideoio.h 找不到

问题:

-- Looking for linux/videodev.h                                              
-- Looking for linux/videodev.h - not found                                                                                                    
-- Looking for linux/videodev2.h                                             
-- Looking for linux/videodev2.h - found                                       
-- Looking for sys/videoio.h                                                                                                                                                    
-- Looking for sys/videoio.h - not found 

解决:

apt-get install libv4l-dev
ln -s /usr/include/libv4l1-videodev.h  /usr/include/linux/videodev.h
  1. CMake Error: The following variables are used in this project, but they are set to NOTFOUND. CUDA_nppi_LIBRARY (ADVANCED)

原因:cuda9不再支持2.0架构

解决方法1:见链接
解决方法2:在cmake命令中指定nppicom库的路径(可以随机给一个已存在的库路径,如nppicc)

cmake -D CUDA_nppicom_LIBRARY=/usr/local/cuda/lib64/libnppicc.so ..
  1. CMake Error at cmake/OpenCVDetectCXXCompiler.cmake:89 (math): math cannot parse the expression: "*100 + ": syntax error, unexpectedDetected version of GNU GCC: (ERROR)

原因:Ubuntu 18.4不支持opencv-2.3.10自带的OpenCVDetectCXXCompiler.cmake,GNU GCC版本判断问题

解决方法:见连接

make 过程

  1. nvcc fatal : Unsupported gpu architecture 'compute_30'
  • 解决方法:在cmake时指定使用Kepler,注意要在cmake/OpenCVDetectCUDA.cmake文件中找到if(CUDA_GENERATION STREQUAL "Kepler")行,将其下面的set(__cuda_arch_bin "x.x x.x")中包含上面计算力的数字删掉。
    set(__cuda_arch_bin "3.0 3.5 3.7")改为set(__cuda_arch_bin "3.5 3.7")
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D CUDA_GENERATION=Kepler ..
  1. NCVPixelOperations.hpp(51): error: a storage class is not allowed in an explicit specialization
    原因:这是由于NCVPixelOperations.hpp的问题
    解决方案:修改modules/gpu/src/nvidia/core/NCVPixelOperations.hpp文件,将文件里的的static inline 修改成 inline就可以了。记得重新cmake。
  2. make[2]: *** [modules/gpu/CMakeFiles/opencv_gpu.dir/build.make:923: modules/gpu/CMakeFiles/opencv_gpu.dir/src/graphcuts.cpp.o] Error 1 make[2]: *** Waiting for unfinished jobs....
    解决方案:修改graphcuts.cpp文件
#if !defined (HAVE_CUDA) || defined (CUDA_DISABLER)
改为:
#if !defined (HAVE_CUDA) || defined (CUDA_DISABLER) || (CUDART_VERSION >= 8000)
  1. error: the compiler can assume that the address of ‘annotate_img’ will never be NULL
    问题:
/data/project/TIA-py3/OpenCV/modules/contrib/src/chamfermatching.cpp:969:30: error: the compiler can assume that the address of ‘annotate_img’ will never be NULL [-Werror=address]969 |             if (&annotate_img!=NULL) {     |                              ^
/data/project/TIA-py3/OpenCV/modules/contrib/src/chamfermatching.cpp:1016:34: error: the compiler can assume that the address of ‘annotate_img’ will never be NULL [-Werror=address]                         1016 |                 if (&annotate_img!=NULL) {                      |                                  ^                    
/data/project/TIA-py3/OpenCV/modules/contrib/src/chamfermatching.cpp: In member function ‘cv::ChamferMatcher::Match* cv::ChamferMatcher::Matching::localChamferDistance(cv::Point, cv::Mat&, cv::Mat&, cv::Ch
amferMatcher::Template*, float)’:                                                                                                                                                                            
/data/project/TIA-py3/OpenCV/modules/contrib/src/chamfermatching.cpp:1111:25: error: the compiler can assume that the address of ‘orientation_img’ will never be NULL [-Werror=address]                  1111 |     if (&orientation_img!=NULL) {  

解决方法:
找到opencv-2.4.10/build/modules/contrib/CMakeFiles/opencv_contrib.dir/flags.make文件,删掉-Werror=address,然后重新 make -j7。注意:可能要重复修改两次make

参考

  1. ubuntu 18.04安装opencv-2.4.10遇错解决

相关内容

热门资讯

常州法院2025年前三季度调解... 调解结案16474件、调解成功率24.08%——这是2025年前三季度常州法院交出的司法成绩单。通过...
安徽省政协研究室副主任陈鑫已任... 据铜陵市政府官网消息,11月20日上午,市委举行理论学习中心组学习会议,邀请省委社会工作部副部长高维...
原创 联... 据光明网报道,11月19日,在联合国大会的讨论中,日本企图争取成为安理会常任理事国的梦想再次破灭,令...
南部关于全县规范法律咨询服务机... 一、专项行动时间 自即日起至2025年12月。 二、举报受理范围 社会各界反映强烈的某些法律咨询服务...
“男子持刀入室盗窃”视频引发关... 近日,一段疑似“小偷”入室盗窃被业主家中监控拍下的视频在网上引发关注。11月21日晚,“翠屏公安”微...
绝不允许日本军国主义幽灵复活!... 2025年11月7日,日本首相高市早苗宣称,如果中国大陆对台湾出动军舰并使用武力,可能会构成“存亡危...
【解决】AI法律助手荣获202... 2025全球数字经济大会启幕,搭建国际数字合作高端平台 经国务院批准,由北京市人民政府、国家互联网信...
嘉兴男子与妻争吵,突然将行李箱... 近日,浙江嘉兴一对夫妻因琐事发生争吵,丈夫突然将装满衣物的行李箱从6楼扔到楼下,引发关注。11月22...
三地107家律所齐聚丰台,京津... 11月22日,京津冀律师驿站举办“党建业务深度融合 促进行业规范发展”主题活动,发布“百千万行动计划...