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环境安装包目录下,需要注意这个变量是否对:
上图的出现要等 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/
下找到 ffmpeg
和 ippicv
目录,修改里面的 cmake
文件,如下:
均将其里面下载文件的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。。。