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

一、安装编译版本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


  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
编译 OpenCVGPU 版本需要先安装 CUDA 和 cuDNN。在安装好这两个软件后,按照以下步骤编译 OpenCVGPU 版本: 1. 下载 OpenCV 源代码,并解压缩到任意目录。 2. 进入 OpenCV 源代码目录,创建一个新的目录 build,并进入该目录。 3. 执行以下命令生成 Makefile 文件: ``` cmake -D CMAKE_BUILD_TYPE=RELEASE \ -D CMAKE_INSTALL_PREFIX=/usr/local \ -D WITH_CUDA=ON \ -D CUDA_ARCH_BIN=7.5 \ -D CUDA_ARCH_PTX=7.5 \ -D OPENCV_EXTRA_MODULES_PATH=../opencv_contrib/modules \ ../opencv ``` 解释一下各个参数的含义: - `-D CMAKE_BUILD_TYPE=RELEASE`:编译类型为 Release 版本。 - `-D CMAKE_INSTALL_PREFIX=/usr/local`:指定安装目录为 /usr/local。 - `-D WITH_CUDA=ON`:打开 CUDA 支持。 - `-D CUDA_ARCH_BIN=7.5`:指定编译生成的二进制代码支持的最低 CUDA Compute Capability 版本。 - `-D CUDA_ARCH_PTX=7.5`:指定编译生成的 PTX 代码支持的最低 CUDA Compute Capability 版本。 - `-D OPENCV_EXTRA_MODULES_PATH=../opencv_contrib/modules`:指定额外的模块路径,这里是 opencv_contrib 模块的路径。 - `../opencv`:指定 OpenCV 源代码的路径。 4. 执行以下命令编译: ``` make -j8 ``` `-j8` 表示使用 8 个线程进行编译(具体数字可以根据自己的 CPU 核心数进行调整)。 5. 执行以下命令安装: ``` sudo make install ``` 这将会把编译好的 OpenCV 安装到 /usr/local 目录下。 注意:以上命令假定你已经正确安装了 CUDA 和 cuDNN。如果你没有安装或者安装不正确,那么编译 OpenCVGPU 版本将会失败。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小树苗m

您的打赏,是我的动力。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值