所有这些OpenCV Python接口之间有何不同?


Answers:


138

OpenCV正式发布了两种类型的Python接口,cvcv2

简历:

我开始工作cv。这样,所有OpenCV数据类型都将保留下来。例如,加载后,图像的格式cvMat与C ++中的相同。

对于数组操作,有几个功能,如cvSet2DcvGet2D等。而一些讨论说,他们是慢。

对于imageROI,您需要特殊的功能,例如cvSetImageROI

如果找到轮廓,cvSeq则返回的结构与Python列表或NumPy数组相比不太好用。

(而且我认为,不久以后它将停止开发。之前,只有cv。后来,OpenCVcv和and一起提供了cv2。现在,在最新版本中,只有cv2模块,并且cv里面是子类cv2。您需要调用import cv2.cv as cv访问它。)

cv2:

而最新的是cv2。在此,一切都返回NumPy状物体ndarraynative Python物体像liststuplesdictionary等,所以由于这个NumPy的支持,你可以在这里做任何numpy的操作。NumPy是一个高度稳定和快速的数组处理库。

例如,如果加载图像,ndarray则返回。

array[i,j] 为您提供(i,j)位置的像素值。

同样,对于imageROI,可以像一样使用数组切片ROI=array[c1:c2,r1:r2]。无需单独的功能。

要添加两个图像,无需调用任何函数,只需执行即可res = img1+img2。(但是NumPy加法是uint8数组(如图像)的模运算。有关更多信息,请参见《OpenCV中的矩阵算术和Numpy之间区别》

返回的轮廓是Numpy数组的列表。您可以在“轮廓-1:入门”中找到有关轮廓的详细讨论。

简而言之,使用cv2可以简化所有步骤,而且速度非常快。

cv2在堆栈溢出问题OpenCV-Python接口cv和cv2的性能比较中,对NumPy如何加快速度进行了简单讨论。

pyopencv

我对此不太了解,因为我没有使用过它。但它似乎已停止进一步发展。

我认为坚持使用官方图书馆会更好。

简而言之,我建议您使用cv2!

编辑:您可以在Windows for Pythoncv2中的安装OpenCV中看到模块的安装过程。


如果要从源代码构建OpenCV,则将编译并安装cv2 Python接口。如果将二进制软件包用于Linux或其他OS,则应查阅OS /发行文档。请参阅goo.gl/MUjXi以获取帮助。
TH。

1
@Framester:请参见此链接中cv2的
Abid Rahman K

阿比德的答案很好。补充一点:我使用Python 3.x了一个项目,唯一可以访问opencv的方法是通过ctypes_opencv和原始的OpenCV 1.0。它声称支持OpenCV pre1.1,但我从未使它起作用。这样,您将使用原始的cvSetROI等C型界面。
神户约翰·约翰逊,2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.