Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
所有这些OpenCV Python接口之间有什么不同?_Python_Opencv - Fatal编程技术网

所有这些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