> 文章列表 > windows上源码安装opencv-python(opencv源码安装)

windows上源码安装opencv-python(opencv源码安装)

windows上源码安装opencv-python(opencv源码安装)

opencv源码安装记录

前言

因为我要用opencv的GStreamer功能,但是通过python的 pip install opencv-python 是没有这个功能的。

所以需要通过源码安装opencv-python,直接从 opencv 源码包去安装<注意并非opencv-python源码包>,然后倒腾好久试错,才产生了下文。

1. 环境配置(准备工作)

  • python3.11
  • numpy1.24.2
  • Cmake3.26.3
  • Visual Studio 2022

2. 参考opencv官网

Building OpenCV from source

官网安装的步骤写的很详细了,我就不单独再誊抄一遍。

这里要注意一点,如果你要将你的opencv编译到你的python环境安装包目录下,需要注意这个变量是否对:
windows上源码安装opencv-python(opencv源码安装)
上图的出现要等 configure 执行完后才有,注意看一下,没问题就执行 generate 按钮。可参考 如何从OpenCV源码编译生成OpenCV-Python的SDK开发包 一文。

然后对照官网的源码安装操作一路到底即可。

FAQ

cmake安装ffmpeg等出现ssl或者网络错误

Refer1: 方案一: 修改build目录下 download_with_curl.sh
这个方案是修改build目录下的一个 download_with_curl.sh 文件,然后通过windows下的git-gui去执行下载,但是我试了效果不太好,就成功了一次…,各位看官可以尝试一下。相比之下,我个人推荐下面这种方式,我用着很ok。

Refer2: 直接在 opencv/3rdparty/ 下找到 ffmpegippicv 目录,修改里面的 cmake 文件,如下:
windows上源码安装opencv-python(opencv源码安装)

windows上源码安装opencv-python(opencv源码安装)
均将其里面下载文件的url加上 https://ghproxy.com/ 前缀以代理下载:

### ippicv.cmake# 核心代码部分
ocv_download(FILENAME ${OPENCV_ICV_NAME}HASH ${OPENCV_ICV_HASH}URL"${OPENCV_IPPICV_URL}""$ENV{OPENCV_IPPICV_URL}""https://ghproxy.com/https://raw.githubusercontent.com/opencv/opencv_3rdparty/${IPPICV_COMMIT}/ippicv/"	# 修改DESTINATION_DIR "${THE_ROOT}"ID IPPICVSTATUS resUNPACK RELATIVE_URL)# --------------------------------------
### ffmpeg.cmake# 核心代码部分
foreach(id ${ids})ocv_download(FILENAME ${name_${id}}HASH ${FFMPEG_FILE_HASH_${id}}URL"$ENV{OPENCV_FFMPEG_URL}""${OPENCV_FFMPEG_URL}""https://ghproxy.com/https://raw.githubusercontent.com/opencv/opencv_3rdparty/${FFMPEG_BINARIES_COMMIT}/ffmpeg/"		# 修改这里DESTINATION_DIR ${FFMPEG_DOWNLOAD_DIR}ID FFMPEGRELATIVE_URLSTATUS res)if(NOT res)set(status FALSE)endif()
endforeach()

直接从cmake文件改动,就可以在使用 cmake-gui 构建的时候避免出现无法下载对应文件的问题,如果一次不成,可以configure多次。

最终终于安装成功,第一次踩坑装起来真的是麻烦。fxxk。。。