所有这些OpenCV Python接口之间有什么不同?
有所有这些OpenCV Python接口之间有什么不同?,python,opencv,Python,Opencv,有 (来自OpenCV的库) (来自OpenCV的老库)和 和它的前任 主要区别是什么?我应该使用哪一种?OpenCV正式发布了两种类型的Python接口,cv和cv2 cv: 我开始使用cv。在这种情况下,所有OpenCV数据类型都会被保留下来。例如,加载时,图像格式为“代码> CVMAT,与C++相同。 对于数组操作,有几个函数,如cvSet2D,cvGet2D,等等。一些讨论说,它们速度较慢 对于imageROI,您需要像cvSetImageROI这样的特殊功能 如果找到轮廓,则返回c
- (来自OpenCV的库)
- (来自OpenCV的老库)和
- 和它的前任
主要区别是什么?我应该使用哪一种?OpenCV正式发布了两种类型的Python接口,
cv
和cv2
cv:
我开始使用cv
。在这种情况下,所有OpenCV数据类型都会被保留下来。例如,加载时,图像格式为“代码> CVMAT,与C++相同。
对于数组操作,有几个函数,如cvSet2D
,cvGet2D
,等等。一些讨论说,它们速度较慢
对于imageROI,您需要像cvSetImageROI
这样的特殊功能
如果找到轮廓,则返回cvSeq
结构,与Python列表或NumPy数组相比,该结构不太好用
(而且我认为,它的开发很快就会停止。早些时候,只有cv
。后来,OpenCV同时提供了cv
和cv2
。现在,在最新的版本中,只有cv2
模块,cv
是cv2
中的一个子类。您需要调用import cv2.cv作为cv
来导入访问它。)
cv2:
最新的一个是cv2
。在这个例子中,所有内容都作为NumPy
对象返回,比如ndarray
和native Python
对象,比如列表
,元组
,字典
,等等。因此,由于这个NumPy支持,您可以在这里执行任何numpython操作。NumPy
是一个高度稳定的函数和快速阵列处理库
例如,如果加载图像,将返回ndarray
array[i,j]
提供(i,j)位置的像素值
此外,对于imageROI,可以使用数组切片,如ROI=array[c1:c2,r1:r2]
。不需要单独的函数
要添加两个映像,无需调用任何函数,只需执行res=img1+img2
(但NumPy加法是对uint8数组(如映像)的模运算。有关更多信息,请参阅文章
返回的等高线是Numpy数组的列表。您可以在中找到有关等高线的详细讨论
简而言之,使用cv2,一切都变得简单且非常快速。
在堆栈溢出问题中,简单讨论NumPy如何加速cv2
pyopencv:
我不太了解这个,因为我没有使用过它。但它似乎已经停止了进一步的开发
我认为最好还是留在官方图书馆
简而言之,我建议您使用cv2!
编辑:您可以在中查看
cv2
模块的安装过程。cv2 Python接口将在您从源代码构建OpenCV时进行编译和安装。如果您使用的是Linux或其他操作系统的二进制软件包,您应该查阅您的操作系统/发行文档。请参阅以获取帮助。@Framester:请参阅c的安装过程v2在这个链接中:阿比德的答案很好。只需再补充一点:我做到了,而且我能够访问opencv的唯一方法是通过ctypes_opencv和原始opencv 1.0。它声称支持opencv pre1.1,但我从来没有让它工作过。这样,你将使用原始的cvSetROI等C-type接口。如果你想用pi安装它p、 阅读或执行:pip安装opencv-python