导入OpenCV与导入cv2的区别

16
我最近在Mac OS上使用pip install安装了opencv-python-3.4.0.12。当我运行Python解释器时,import cv2没有问题,而import opencv会引发ModuleNotFoundError。然而,当我运行Python3解释器时,import opencv正常工作,而import cv2会引发ModuleNotFoundError。
这种不同的原因是什么?另外,应该使用import opencv还是import cv2cv2是否指OpenCV版本2?

3
cv2 模块是正确的使用方式,任何提供 opencv 的东西都是无意义的。 - Dan Mašek
2个回答

16

你应该导入cv2。OpenCV发布了两种Python接口,cvcv2,最新的是cv2这篇文章可以帮助你确定是否正确安装了opencv


1
这个答案部分错误。opencv-python及其相关包提供了cv2的导入方式。推荐的导入方式是import cv2 as cv。目前没有任何包提供cv的“接口”。 - Christoph Rackwitz

4
cv2 的命名是历史意外事件。
历史课:OpenCV 最初是一个 C API。当时的第一个 Python 绑定使用了 cv 导入。随着 OpenCV 2.0 版本的推出,引入了一个 C++ API。这也是 C++ 包含语句 #include <opencv2/...> 出现的时候。C++ API 使用了 cv:: 命名空间。Python 导入现在被称为 cv2 并在 cv2.cv 命名空间中继承了旧的 C API。 2 基本上只是指“新 API”。
从那以后,版本 3.x 和 4.x,“C++ API”仍然是主要的 API,并且当前是唯一的 API,因为 C API 被移除了。但是,头文件的位置没有随着新的主要版本而改变,Python 模块导入的名称也没有改变。 opencv-python只提供 cv2 导入。这是所有 v3.x 和 4.x 版本, 即 当前版本, 可能会延续到 v5.x 的导入方式。 推荐的导入和用法 是:
import cv2 as cv # to mirror the `cv::` namespace
# use cv.imread() and so on
没有 opencv 的导入。 如果那样“起作用”是错误的,有些东西正在欺骗你。 检查已安装的软件包并删除任何可疑的内容。 在Python中提供OpenCV的唯一可靠软件包是官方软件包,即PyPI上的 opencv-python 及其附加模块和不含GUI模块的兄弟软件包

没有 cv 导入。 在将来,这些软件包可能会更改以删除旧名称并直接提供cv导入。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接