import opencv vs import cv2

sta*_*n25 4 python macos opencv pip

我最近在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 cv2?是否cv2参考OpenCV版本2?

Ish*_*awa 5

您应该导入cv2。OpenCV发行了两种类型的Python接口,cvcv2。最新的是cv2将使您了解是否已opencv正确安装。


Chr*_*itz 5

的命名cv2是一个历史偶然。

历史教训:OpenCV 最初是一个 C API。当时的第一个 Python 绑定使用了cv导入。OpenCV 2.0 版本引入了 C++ API。这也是 C++ include say#include <opencv2/...>出现的时候。C++ API 使用cv::命名空间。Python 导入现在称为cv2,并在命名空间中携带旧的 C API cv2.cv

基本上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
Run Code Online (Sandbox Code Playgroud)

没有opencv进口。如果这“有效”,那就错了,有东西在欺骗你。检查已安装的软件包并删除任何可疑的内容。在 Python 中为您提供 OpenCV 的唯一值得信赖的软件包是官方软件包,它位于opencv-pythonPyPI及其同级软件包(带有附加 contrib 模块的软件包,不包括 GUI 模块的软件包)。

没有cv进口。将来,这些软件包可能会更改为放弃旧名称并cv直接提供导入。