因为我要开启opencv的GStreamer功能,这是和ffmpeg相类似的对视频流操作的一个功能,默认没有开启,需要手动编译。
安装方式链接: opencv-install-with-GStreamer
核心内容如下:
git clone --recursive https://github.com/skvark/opencv-python.git
cd opencv-python
# 这里针对linux,windows的cmd或则powershell去设置,开启GSTREAMER开关
## linux
export CMAKE_ARGS="-DWITH_GSTREAMER=ON"
## powershell
$env:CMAKE_ARGS = '-DWITH_GSTREAMER=ON'
## cmd
set CMAKE_ARGS=-DWITH_GSTREAMER=ON
# Upgrade pip and wheel
pip install --upgrade pip wheel
# Use wheel package target file
pip wheel . --verbose
# note, wheel may be generated in dist/ directory, so may have to cd first
pip install opencv_python*.whl
安装的过程中一直出现各种问题,导致失败,经过不懈折腾,最后还是成功了,这里总结了出错的点。。。
Q1: 在安装numpy的时候最易出错
Q2: 可能安装ffmpeg或者ippicv失败
这里最容易遇到的问题是,https://raw.githubusercontent.com
无法访问。导致ssl网络错误。
需要找到下面俩目录下的 cmake
文件去修改。
修改如上图,ippicv目录下的cmake也同样修改。
Q3: whl包名不符合PEP规范
WARNING: Built wheel for opencv-python is invalid: Metadata 1.2 mandates PEP 440 version, but ‘4.7.0.6b73d90’ is not
错误截图:
这里经过我的排查发现:
错误出现在这里:
git rev-parse --short HEAD
会获取当前代码库HEAD指针所在的短SHA-1值。
也就是git log可以看到:
可以看到 ‘4.7.0.6b73d90’ 就是在当前版本后面多了一个hash值字符串,所以为了避免这种情况,需要手动改动下图中部分,将尾部的hash字符串给接去掉。
然后再重新执行 pip wheel . --verbose
就好了。最终会打包成功。