Windows系统下编译opencv-python

背景

很多人都会觉得既然官方已经释放了opencv-python,为什么还要自己编译一遍呢?这是因为官方释放的版本缺少了很多深度学习相关的模块,如cuda加速等。这种情况下,就需要自行编译了(当然编译opencv-python有点多此一举的感觉,毕竟opencv是用C++写的,但是存在即合理,有些人就是喜欢用python,或者说很多深度学习选用的语言也是python,这时候就需要用到opencv-python了)

一、How to

利用Cmake生成vs工程文件后本地编译,尽量避免使用Cmake_gui,虽然很直观,但是遇到很多问题,比如没有相应的cmake选项,即使手动填充了cmake选项也无法生效,而且网上的教程基本上都是GUI的,尝试了很多,都没有成功,最终还是选用了命令行

二、步骤

1.生成工程文件

在opencv源文件中新建一个build文件夹,并且在build文件夹中run 如下cmake指令
Cmake指令:

cmake \
-G "Visual Studio 14 2015" \ 编译器
-A x64 \ 系统位数
-D WITH_CUDA=ON \ cuda加速相关选项
-D WITH_CUDNN=ON \ cuda加速相关选项
-D WITH_CUBLAS=ON \ cuda加速相关选项
-D OPENCV_DNN_CUDA=ON \ cuda加速相关选项
-D CUDA_TOOLKIT_ROOT_DIR="C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v10.0" \ cuda安装路径
-D CUDNN_VERSION='7.6.5' \ cudnn版本
-D CUDNN_INCLUDE_DIR="C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v10.0/include" \ cudnn头文件
-D CUDNN_LIBRARY="C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v10.0/lib/x64/cudnn.lib" \ cudnn库
-D CUDA_cublas_LIBRARY="C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v10.0/lib/x64/cublas.lib" \ cublas库
-D ENABLE_FAST_MATH=1 \ cuda加速相关选项
-D CUDA_FAST_MATH=1 \ cuda加速相关选项
-D CUDA_ARCH_BIN='5.0' \ 根据gpu设置,官网有说明,而且很重要,文中附了链接查找对应的Compute Capability
-D CUDA_ARCH_PTX='' \
-D PYTHON_DEFAULT_EXECUTABLE="C:/Program Files/Anaconda3/python.exe" \ 默认python
-D PYTHON3_EXECUTABLE="C:/Program Files/Anaconda3/python.exe" \ build opencv-python3相关选项
-D PYTHON3_INCLUDE_DIR="C:/Program Files/Anaconda3/include" \ build opencv-python3相关选项
-D PYTHON3_LIBRARY="C:/Program Files/Anaconda3/libs/python37.lib" \ build opencv-python3相关选项
-D PYTHON3_NUMPY_INCLUDE_DIRS="C:/Program Files/Anaconda3/Lib/site-packages/numpy/core/include" \ build opencv-python3相关选项
-D PYTHON3_PACKAGES_PATH="c:/users/zpn3szh/appdata/roaming/python/python37/site-packages" \ build opencv-python3相关选项,编译生成的pyd文件安装路径
-D OPENCV_EXTRA_MODULES_PATH="D:/open_source/opencv_local/sources/opencv_contrib/modules" \ opencv contrib路径
-D WITH_GSTREAMER=ON \ 自行百度了解,为了调取网络摄像头
-D BUILD_opencv_python2=OFF \ 我这里不想编译opencv-python2
-D BUILD_opencv_python3=ON \ 表明编译opencv-python3,与上面的设置选项相关
-D BUILD_TESTS=OFF \
-D BUILD_PERF_TESTS=OFF \
-D BUILD_EXAMPLES=OFF \
-D CMAKE_BUILD_TYPE=RELEASE \ 编译类型release
-D CMAKE_INSTALL_PREFIX="D:/open_source/opencv_local/sources/opencv/build/install" \ 安装路径,注意与pyd安装路径区分,这里安装的是dll和lib文件
..

CUDA_ARCH_BIN值查找
由于上面的cmake指令加了注释,所以在下面附了不带注释的送给懒人党

cmake \
-G "Visual Studio 14 2015" \
-A x64 \
-D WITH_CUDA=ON \
-D WITH_CUDNN=ON \
-D WITH_CUBLAS=ON \
-D OPENCV_DNN_CUDA=ON \
-D CUDA_TOOLKIT_ROOT_DIR="C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v10.0" \
-D CUDNN_VERSION='7.6.5' \
-D CUDNN_INCLUDE_DIR="C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v10.0/include" \
-D CUDNN_LIBRARY="C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v10.0/lib/x64/cudnn.lib" \
-D CUDA_cublas_LIBRARY="C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v10.0/lib/x64/cublas.lib" \
-D ENABLE_FAST_MATH=1 \
-D CUDA_FAST_MATH=1 \
-D CUDA_ARCH_BIN='5.0' \
-D CUDA_ARCH_PTX='' \
-D PYTHON_DEFAULT_EXECUTABLE="C:/Program Files/Anaconda3/python.exe" \
-D PYTHON3_EXECUTABLE="C:/Program Files/Anaconda3/python.exe" \
-D PYTHON3_INCLUDE_DIR="C:/Program Files/Anaconda3/include" \
-D PYTHON3_LIBRARY="C:/Program Files/Anaconda3/libs/python37.lib" \
-D PYTHON3_NUMPY_INCLUDE_DIRS="C:/Program Files/Anaconda3/Lib/site-packages/numpy/core/include" \
-D PYTHON3_PACKAGES_PATH="c:/users/zpn3szh/appdata/roaming/python/python37/site-packages" \
-D OPENCV_EXTRA_MODULES_PATH="D:/open_source/opencv_local/sources/opencv_contrib/modules" \
-D WITH_GSTREAMER=ON \
-D BUILD_opencv_python2=OFF \
-D BUILD_opencv_python3=ON \
-D BUILD_TESTS=OFF \
-D BUILD_PERF_TESTS=OFF \
-D BUILD_EXAMPLES=OFF \
-D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX="D:/open_source/opencv_local/sources/opencv/build/install" \
..

执行完cmake指令,看到如图片所示,表明cmake正确配置且成功生成工程文件
cmake执行结果

2.打开工程文件编译

打开build文件夹下的OpenCV.sln文件
1.右击ALL_BUILD, Build编译
2.右击INSTALL, Build完成安装
编译

3.验证

成功!!!
opencv-python

总结

想要在Windows下成功编译opencv-python,不要依赖Cmake_gui,否则可能会走上一条不归路

评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值