正式地,OpenCV发布了两种类型的Python接口, cv 和 cv2 。
cv
cv2
的 简历: 强>
我开始工作了 cv 。在此,所有OpenCV数据类型都保留。例如,加载时,图像是格式的 cvMat ,与C ++相同。
cvMat
对于数组操作,有几个函数,如 cvSet2D , cvGet2D 等等。有些讨论说,它们比较慢。
cvSet2D
cvGet2D
对于imageROI,您需要特殊功能,如 cvSetImageROI 。
cvSetImageROI
如果你发现轮廓, cvSeq 与Python列表或NumPy数组相比,返回的结构不太合适。
cvSeq
(我认为,很快它的发展就会停止。早些时候,只有 cv 。后来,OpenCV随之而来 cv 和 cv2 。现在,在最新版本中,只有 cv2 模块,和 cv 是里面的子类 cv2 。你需要打电话 import cv2.cv as cv 访问它。)
import cv2.cv as cv
的 CV2: 强>
最新的是 cv2 。在这里,一切都归还为 NumPy 对象喜欢 ndarray 和 native Python 对象喜欢 lists , tuples , dictionary 等等。由于这个NumPy的支持,你可以在这里做任何numpy操作。 NumPy 是一个高度稳定和快速的阵列处理库。
NumPy
ndarray
native Python
lists
tuples
dictionary
例如,如果您加载图像,则 ndarray 退回。
array[i,j] 给出(i,j)位置的像素值。
array[i,j]
此外,对于imageROI,可以使用数组切片 ROI=array[c1:c2,r1:r2] 。无需单独的功能。
ROI=array[c1:c2,r1:r2]
要添加两个图像,不需要调用任何函数,只需这样做 res = img1+img2 。 (但NumPy的添加是uint8数组的模运算,如图像。请参阅文章 OpenCV中矩阵算法与Numpy的区别 了解更多。
res = img1+img2
返回的轮廓是Numpy数组的列表。您可以在中找到有关轮廓的详细讨论 轮廓 - 1:入门 。
的 简而言之,使用cv2,一切都简化而且非常快。 强>
关于NumPy如何加速的简单讨论 cv2 在Stack Overflow问题中 OpenCV-Python接口,cv和cv2的性能比较 。
的 pyopencv 强> :
因为我没有使用它,所以我对此知之甚少。但似乎已停止进一步发展。
我认为坚持官方图书馆会更好。
的 总之,我建议你使用cv2! 强>
编辑:你可以看到的安装程序 cv2 模块 在Windows中为Python安装OpenCV 。