使用Python和OpenCV时,“import cv”和“import opencv.cv”有什么区别?
我正在尝试用Python使用OpenCV,并把一些C++的代码转换过来。不管怎样,如果我这样写:
import cv
img = cv.LoadImage('image.jpg')
是可以的。或者:
import opencv.cv as opcv
size = opcv.cvSize(40, 50)
但是,不管怎样,cv
模块里没有cvSize
这个数据结构,而opencv.cv
里也没有LoadImage
这个功能。那么,每个模块到底有什么呢?我试着查阅文档,但找不到相关信息。我是应该这样使用,还是我的设置有问题?
2 个回答
0
在这里:
import cv
你是在从Python的模块搜索目录中导入cv模块。这意味着你可能导入了一个不同版本的cv模块,它可能存放在opencv包安装目录之外,就像在这个例子中一样。
而在这里:
import opencv.cv
你是明确地导入了opencv包里的cv版本,也就是在opencv包安装目录中的那个版本。这样做几乎可以确保你使用的就是opencv包里的版本,这种方式和使用以下语法是一样的:
from opencv import cv
2
其实真正的答案是 :) “import opencv.cv” 和 “from opencv import cv” 这两种写法都是旧的导入方式。
自从 OpenCV 2.0 版本开始,使用了新的 Python 导入方式,你应该用的写法是这样的:
# import only cv, no opencv
# this also brings in sub modules such as highgui
import cv
# no "cv" prepended before all method names
src_mat = cv.LoadImageM('yourfilename.png', cv.CV_LOAD_IMAGE_GRAYSCALE)
# let's show the image in a window
cv.NamedWindow('your name', 1)
cv.ShowImage('your name', src_mat)
cv.WaitKey
旧的导入方式是通过 SWIG 工具实现的,而新的导入方式,根据 opencv 2.2 的源代码来看,似乎是自己制作的。