惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园_首页
Blog — PlanetScale
Blog — PlanetScale
腾讯CDC
aimingoo的专栏
aimingoo的专栏
Microsoft Azure Blog
Microsoft Azure Blog
A
About on SuperTechFans
J
Java Code Geeks
G
Google Developers Blog
N
Netflix TechBlog - Medium
Vercel News
Vercel News
Y
Y Combinator Blog
Recent Announcements
Recent Announcements
I
InfoQ
Stack Overflow Blog
Stack Overflow Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
T
The Blog of Author Tim Ferriss
罗磊的独立博客
GbyAI
GbyAI
小众软件
小众软件
大猫的无限游戏
大猫的无限游戏
WordPress大学
WordPress大学
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More

又见苍岚

COLMAP PatchMatch Stereo 算法详解 事件驱动的状态机框架:从理论到工程实践 Git 在国内网络环境下无法 Push 的排查与修复 —— 配置 Clash 代理 分段五次多项式插值原理详解 路径插值方法深度对比研究 Claude Code 使用指南 OpenClaw 记忆管理与技能创建指南 CBS(Conflict-Based Search)算法详解 A* 算法及其变种详解 OpenClaw 配置多 Agents Windows Powershell 无法加载文件,因为在此系统上禁止运行脚本问题的解决方案 MaxClaw 安装流程 大模型 AI 名词介绍 AList 网盘聚合工具简介 Protobuf 简介与测试 Claude Code 简介以及 GLM 4.7 模型接入 Github 歌词下载工具 163MusicLyrics Python __getattr__ 懒加载 Python TypedDict 机器人仿真平台 Gazebo 安装记录 机器人仿真平台 Gazebo 简介 多机器人路径规划问题(Multi-Agent Path Finding, MAPF)简介 Python exifread 读取修改过的 jpeg 信息错误问题修复 3D 坐标系变换的理解 3D 旋转矩阵基本概念 MongoDB Compass 介绍 Python 环境管理工具 uv Flutter 开发指南 Snipaste 安装下载与黑屏问题解决方案 全局路径规划算法记录
OpenCV 关于版本的一些说明
Yiwei Zhang · 2024-07-08 · via 又见苍岚

近期接触了 OpenCV 的多种版本,本文记录搜集到的信息。

目录

  1. OpenCV 对 Python 版本的支持
  2. OpenCV 主版本、Contrib 版本以及 Headless 版本的含义
  3. 关于 OpenCV NonFree 的相关信息

OpenCV 对 Python 版本的支持

从 pypi 的 opencv 清华镜像源可以看到 OpenCV 与 Python 版本的支持关系,此处做整理总结:

OpenCV 版本 Python 版本 备注
3.4.0.X - 3.4.1.X 2.7 - 3.6
3.4.2.X - 3.4.7.28 2.7 - 3.7
3.4.8.29 - 3.4.9.31 2.7 - 3.8
3.4.9.33 - 3.4.11.43 3.5 - 3.8
3.4.11.45 - 3.4.15.X 3.6 - 3.9
3.4.16.57 - 3.4.16.59 3.6 - 3.10
3.4.17.63 - 3.4.18.65 3.6 - 3.7
4.0.0.21 - 4.1.1.26 2.7 - 3.7
4.1.2.30 - 4.2.0.34 2.7 - 3.8
4.3.0.36 - 4.4.0.42 3.5 - 3.8
4.4.0.44 - 4.5.3.56 3.6 - 3.9
4.5.4.58 - 4.5.4.60 3.6 - 3.10

Main / Contrib / Headless

区别列表:

主版本 Contrib 版本 Headless 版本 Contrib Headless 版本
安装命令 pip install opencv-python pip install opencv-contrib-python pip install opencv-python-headless pip install opencv-contrib-python-headless
版本含义 官方版本:带有官方核心开源库 完整版本(Full package):官方版本 + 第三方附加开源库 官方版本 - GUI相关内容(server 版本,不带 Qt 相关内容) 完整版本 - GUI相关内容(server 版本,不带 Qt 相关内容)

注意:不要在同一环境中安装多个不同的软件包,按需安装某一个 opencv python 包就可以了

NonFree

OpenCV 是一个开源图像处理库,其中部分库由于种种原因不再免费开源,OpenCV 便将这部分内容放到 NonFree 的部分,需要付费使用或者手动开启重新编译后才能使用。

核心就是在 Cmake 编译时开启 contrib 库,同时开启 NONFREE

1
2
-D OPENCV_EXTRA_MODULES_PATH="../../opencv_contrib/modules" \
-D OPENCV_ENABLE_NONFREE=ON \

非免费内容

其中最常用的就是 SIFT 和 SURF 特征的提取:

SIFT

SIFT 特征最开始是可以使用的 (3.4.10 之前),之后有很长一段时间 OpenCV 是不能直接用的(4.2.x 之前)

1
2
# 这个时期的用法
cv2.xfeatures2D.SIFT_create ()

直到 2020年3月保护期结束后整合到主版本免费使用,用法为:

1
cv2.sift_create() 

这里直接引述大佬的说法:

1
2
3
4
5
6
sift = cv2.sift_create() # work in:
# 3.4.11, 4.4.0, 4.5.x, 4.6.0 ==> Sift became free since March 2020
sift = cv2.xfeatures2D.SIFT_create () # work in:
# 3.2.x, 3.3.x, 3.4.0, 3.4.1, 3.4.2, 3.4.10, 4.3.0
sift = cv2.xfeatures2D.SIFT_create () # ==> Set OPENCV_ENABLE_NONFREE CMake option and rebuild the library in function 'create' (the versions where the problem is present)
# 3.4.3, 3.4.4, 3.4.5, 3.4.6, 3.4.7, 3.4.8, 3.4.9, 4.0.x, 4.1.x, 4.2.x
SURF

SURF 现在(2024.7)还没有解封,可以免费使用的只有早期 opencv 版本,之后想用都得用 NonFree 重新编译:

1
2
3
4
SURF = cv2.xfeatures2D.SURF_create () # work in :
# 3.2.x, 3.3.x, 3.4.0, 3.4.1, 3.4.2
SURF = cv2.xfeatures2D.SURF_create () # ==> Set OPENCV_ENABLE_NONFREE CMake option and rebuild the library in function 'create' (the versions where the problem is present)
# 3.4.3, 3.4.4, 3.4.5, 3.4.6, 3.4.7, 3.4.8, 3.4.9, 3.4.10, 3.4.11, 4.0.x, 4.1.x, 4.2.x, 4.3.0, 4.4.0, 4.5.x, 4.6.0
ORB

ORB 特征一直是可以随便用的,已经合在主版本中

1
orb = cv2.ORB_create()

报错解决

过程中遇到过一些错误

‘GLIBCXX_3.4.30’ not found for librosa in conda virtual environment

解决方案

1
conda install -c conda-forge libstdcxx-ng=12

参考资料

文章链接:
https://www.zywvvd.com/notes/study/image-processing/opencv/opencv-version-about-nonfree/opencv-version-about-nonfree/