所有这些OpenCV Python接口有什么不同?

Fra*_*ter 85 python opencv

我应该使用哪些主要差异?

Abi*_*n K 134

正式地说,OpenCV发布了两种类型的Python接口,cv以及cv2.

简历:

我开始工作了cv.在此,所有OpenCV数据类型都保留.例如,加载时,图像的格式cvMat与C++相同.

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

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

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

(而且我认为,很快就会停止它的开发.早些时候,只有cv.后来,OpenCV带有两个cvcv2.现在,在最新版本中,只有cv2模块,并且cv是内部的子类cv2.你需要调用import cv2.cv as cv访问它.)

CV2:

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

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

array[i,j] 给出(i,j)位置的像素值.

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

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

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

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

关于NumPy如何加速的简单讨论cv2在Stack Overflow问题OpenCV-Python接口,cv和cv2的性能比较.

pyopencv:

因为我没有使用它,所以我对此知之甚少.但似乎已停止进一步发展.

我认为坚持官方图书馆会更好.

总之,我建议你使用cv2!

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