当前位置:   article > 正文

1、opencv编译gpu版本,支持c++和python调用(踩坑一个月,最终成功)_yuan ma an zhuang gpu opencv c++

yuan ma an zhuang gpu opencv c++
一、安装编译版本cudnn非运行版本
   cp cuda/include/cudnn.h /usr/local/cuda/include/
   cp cuda/lib64/libcudnn* /usr/local/cuda/lib64/
   chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*
二、安装miniconda
	a、下载miniconda后,依次执行下面的命令:
	   bash miniconda3.sh
           按enter继续
           >>yes
           >>miniconda #此处是你需要指定的安装路径
	   source ~/.bashrc
         b、更改镜像文件
           conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
	   conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
	   conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
	   conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/bioconda/
	 c、查看镜像
	   conda config --get channels
三、编译安装cmake
1、保证镜像可以正常使用,如果不能,解决方法如下:
 	第一步:使用命令:cat /etc/redhat-release查看版本号
	第二步:把下面内容写成shell文件,修该minorver后面的版本号为本机版本号,CentOS 8之前和之后的,选择其中一个就可以了
	# CentOS 8 之前

	minorver=6.10
	sudo sed -e "s|^mirrorlist=|#mirrorlist=|g" \
         	-e "s|^#baseurl=http://mirror.centos.org/centos/\$releasever|baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos-vault/$minorver|g" \
         	-i.bak \
         	/etc/yum.repos.d/CentOS-*.repo
	# CentOS 8 之后
	minorver=8.5.2111
	sudo sed -e "s|^mirrorlist=|#mirrorlist=|g" \
        	 -e "s|^#baseurl=http://mirror.centos.org/\$contentdir/\$releasever|baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos-vault/$minorver|g" \
         	 -i.bak \
        	 /etc/yum.repos.d/CentOS-*.repo
	第三步:使用下面命令更新:
		sudo yum makecache

2、安装依赖项(cmake等版本太低要更新):
	yum install cmake
	yum install gcc
	yum install gcc-g++
	yum -y install ffmpeg ffmpeg-devel
	yum install opencv-devel
	yum install gtk2 gtk2-devel gtk2-devel-docs
	yum install libgnomeui-devel
	yum install git
3、编译Opencv
	a、下载opencv和对应版本的opencv-contrib,并将opencv-contrib放在opencv目录下
	b、在opencv文件夹下面建build文件夹
           mkdir build	
	   cd build
	c、进入到build文件夹下面,执行下面命令(或者写成shell文件在该文件夹中执行):
	   cmake -D CMAKE_BUILD_TYPE=RELEASE \
		-D CMAKE_INSTALL_PREFIX=/usr/local \
		-D WITH_TBB=ON \
		-D ENABLE_FAST_MATH=1 \
		-D CUDA_FAST_MATH=1 \
		-D WITH_CUBLAS=1 \
		-D WITH_CUDA=ON \
		-D BUILD_opencv_cudacodec=On \
		-D WITH_CUDNN=ON \
		-D OPENCV_DNN_CUDA=ON \
		-D CUDA_ARCH_BIN=8.6 \
		-D WITH_V4L=ON \
		-D WITH_QT=OFF \
		-D WITH_OPENGL=ON \
		-D WITH_GSTREAMER=ON \
		-D OPENCV_GENERATE_PKGCONFIG=ON \
		-D OPENCV_PC_FILE_NAME=opencv.pc \
		-D OPENCV_ENABLE_NONFREE=ON \
		-D CUDA_CUDA_LIBRARY=/usr/local/cuda-11.4/lib64/stubs/libcuda.so \
		-D CUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda-11.4 \
		-D OpenCL_LIBRARY=/usr/local/cuda-11.4/lib64/libOpenCL.so \
		-D CUDNN_LIBRARY=/usr/local/cuda-11.4/lib64/libcudnn.so \
		-D OpenCL_INCLUDE_DIR=/usr/local/cuda-11.4/include \
		-D OPENCV_EXTRA_MODULES_PATH=/opt/installer/opencv-4.5.2/contrib/modules \
		-D PYTHON3_LIBRARIES=/opt/miniconda3/lib/libpython3.7m.so \
		-D PYTHON3_PACKAGES_PATH=/opt/miniconda3/lib/python3.7/site-packages \
		-D PYTHON3_INCLUDE_PATH=/opt/miniconda3/include/python3.7m \
		-D INSTALL_PYTHON_EXAMPLES=ON \
		-D INSTALL_C_EXAMPLES=ON \
		-D BUILD_SHARED_LIBS=OFF \
		-D BUILD_EXAMPLES=ON .. \
		-DBUILD_opencv_python2=OFF \
		-DBuild_opencv_python3=ON \
		-DPYTHON3_EXECUTABLE=/opt/miniconda3/bin/python
	d、检查安装配置,包括显卡是否支持等,确认无误后继续执行面命令
	   sudo make -j6
           sudo make insall
4、导入cv2后也许会出现各种不同错误,错误类型较多,概率较高。简单列举其一,有其他自行查阅解决
	ImportError: /lib64/libk5crypto.so.3: undefined symbol: EVP_KDF_ctrl, version OPENSSL_1_1_1b
	解决方法:
	   a、查找libcrypto.so.1.1路径
	      find / -iname 'libcrypto.so.1.1'
	   b、修改文件
	      mv /opt/miniconda3/pkgs/openssl-1.1.1d-h7b6447c_4/lib/libcrypto.so.1.1 /opt/miniconda3/pkgs/openssl-1.1.1d-h7b6447c_4/lib/back.libcrypto.so.1.1
	      mv /opt/miniconda3/pkgs/openssl-1.1.1m-h7f8727e_0/lib/libcrypto.so.1.1 /opt/miniconda3/pkgs/openssl-1.1.1m-h7f8727e_0/lib/back.libcrypto.so.1.1
	      mv /opt/miniconda3/lib/libcrypto.so.1.1 /opt/miniconda3/lib/back.libcrypto.so.1.1
	若不是该问题请恢复:
	      mv /opt/miniconda/pkgs/openssl-1.1.1d-h7b6447c_4/lib/back.libcrypto.so.1.1 /opt/miniconda/pkgs/openssl-1.1.1d-h7b6447c_4/lib/libcrypto.so.1.1 
	      mv /opt/miniconda/pkgs/openssl-1.1.1m-h7f8727e_0/lib/back.libcrypto.so.1.1 /opt/miniconda/pkgs/openssl-1.1.1m-h7f8727e_0/lib/libcrypto.so.1.1 
	      mv /opt/miniconda/lib/back.libcrypto.so.1.1 /opt/miniconda/lib/libcrypto.so.1.1 
5、激活miniconda环境,输入python,输入以下内容,检查所安装的opencv是否可用,如果返回True表示安装成功,若False或者导入opencv时报错,那你就摊上大麻烦了,请检查问题重新编译配置opencv。
	import cv2
	cv2.ocl.haveOpenCL()
6、安装python依赖的库:
   a、首先安装torch和torchversion离线包(下载好的,在线安装太慢),命令如下:
      pip install torch-1.8.1+cu111-cp37-cp37m-linux_x86_64.whl
      pip install torchvision-0.9.1+cu111-cp37-cp37m-linux_x86_64.whl
   b、安装剩余包,可以新建一个requirements.txt文件,然后在里面写入如下内容:
	# detect--------------------------#
	Pillow==8.4.0
	#numpy==1.21.5
	#torch==1.8.1+cu111
	#torchvision==0.9.1+cu111
	paho-mqtt==1.5.1
	#opencv-python==4.5.2.52
	scikit-learn==0.24.2
	matplotlib==3.3.4
	pandas==1.1.5
	requests==2.26.0
	tqdm==4.61.0
	PyYAML==3.12
	seaborn==0.11.1
	pynvml==11.4.1

	# flask---------------------------#
	Flask==2.0.1
    c、使用如下命令安装:
	pip install -r requirements.txt 
        如需要制定镜像地址,可以使用如下命令:
	pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple


  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123
  • 124
  • 125
  • 126
  • 127
  • 128
  • 129
  • 130
  • 131
  • 132
  • 133
  • 134
  • 135
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/864724
推荐阅读
相关标签
  

闽ICP备14008679号