win下python可直接pip install opencv,但是由于官方提供的编译包为基础包,不包含cuda、gstreamer等特殊功能,所以需要自行编译安装。
编译准备:
下载:visual studio (最好2019版);cmake gui或MinGW(自动cmake工具);
everything(查找依赖位置)
dependenciesgui、processMonitor(查看文件、进程依赖关系,分析dll依赖)
安装gsteramer-runtime和gsteramer-development,下载以下文件,会自动安装到当前盘的同一路径下(版本可能与opencv存在依赖关系)
需要具备魔法。
下载opencv包源码,版本最好与python版本不冲突。可选择下载opencv_contrib.
建议在conda环境下工作,否则后续使用其它版本时麻烦。
-
下载好gstreamer后,将该软件目录添加到环境变量
-
在opencv源码下建立build文件夹
-
cmakegui中添加源码文件和build文件夹,configure选择对应的visual studio版本,其它默认
-
自动执行cmakeLists.txt文件中的指令。如果网不好会在github上下载文件失败,导致生成失败
-
在cmakedownload.txt中自行查找下载的文件,并根据链接自行下载完,放置在build.cache文件夹下指定目录。全部下载完后重新configure并成功生成。(也可使用魔法)
-
配置自己需要的编译内容,查看gstreamer部分是否成功识别、python路径是否正确,确认无误后点击configure,全部变白色
-
点击generate,生成visual studio工程文件,在里面选择release x64模式,点击CmakeTargets\INSTALL build
-
会自行编译生成指定文件,并安装至指定位置。
-
对于python版本大于3.8,无法从系统环境变量读取dll,小于3.8版本的,将编译生成的opencv\build\install\x64\vc64\lib和bin目录添加到PATH环境变量,之后成功import cv2
-
出现import cv2找不到dll的问题,需要使用依赖分析工具分析cv2.cp310-win_amd.pyd文件依赖关系,将缺失的依赖添加到python可以找到的位置。或使用os命令添加:
import os os.add_dll_directory("D:\\build\\opencv\\4_7_0\\cuda_12_D\\bin") import cv2
全部添加后,可成功import cv2
-
将dll的位置加入site-packages\cv2\config.py文件下,即可自动导入。
-
测试opencv
import cv2 import numpy print(cv2.__file__) print(cv2.getBuildInformation()) def show_img(name,img) cv2.imshow(name,img) cv2.waitKey(0) cv2.destroyAllWindows() img = cv2.imread(path) show_img(img)