96

主要区别是什么,我应该使用哪一个?

4

1 回答 1

147

OpenCV 正式发布了两种 Python 接口,cvcv2.

简历:

我开始研究cv. 在此,所有 OpenCV 数据类型都被保留。例如,加载时,图像是 format cvMat,与 C++ 中的相同。

对于数组操作,有几个函数,如cvSet2D,cvGet2D等。有些讨论说,它们速度较慢。

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

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

(而且我认为,它的开发很快就会停止。之前,只有cv. 后来,OpenCV 附带了cvcv2。现在,在最新版本中,只有cv2模块,并且cv里面是一个子类cv2。你需要调用import cv2.cv as cv访问它。)

简历2:

而最新的是cv2. 在这种情况下,所有内容都以NumPy对象ndarraynative Python对象的形式返回,如lists, tuples,dictionary等。因此,由于对 NumPy 的支持,您可以在此处执行任何 numpy 操作。NumPy是一个高度稳定和快速的阵列处理库。

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

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

此外,对于 imageROI,可以使用数组切片,如ROI=array[c1:c2,r1:r2]. 不需要单独的功能。

要添加两个图像,不需要调用任何函数,只需执行res = img1+img2. (但 NumPy 加法是对像图像这样的 uint8 数组进行模运算。请参阅文章OpenCV 中的矩阵算术与 Numpy 之间的差异以了解更多信息。

返回的轮廓是 Numpy 数组的列表。您可以在Contours-1: Getting Started中找到关于 Contours 的详细讨论。

简而言之,使用 cv2 一切都被简化并且非常快。

cv2在 Stack Overflow 问题OpenCV-Python 接口 cv 和 cv2 的性能比较中简单讨论了 NumPy 如何加速。

pyopencv

我对这个了解不多,因为我没有使用过。但它似乎已经停止了进一步的发展。

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

总之,我会推荐你​​使用 cv2!

编辑:您可以在Install OpenCV in Windows for Python 中查看cv2模块的安装过程。

于 2012-05-03T05:16:31.807 回答