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

本文介绍了所有这些 OpenCV Python 接口之间有什么不同?的处理方法,对大家解决问题具有一定的参考价值

问题描述

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

What are the main differences and which one should I use?

推荐答案

OpenCV 官方发布了两种 Python 接口,cvcv2.

Officially, OpenCV releases two types of Python interfaces, cv and cv2.

简历:

我开始研究 cv.在这种情况下,所有 OpenCV 数据类型都保持原样.例如,加载时,图像格式为 cvMat,与 C++ 中相同.

I started working on cv. In this, all OpenCV data types are preserved as such. For example, when loaded, images are of format cvMat, same as in C++.

对于数组操作,有cvSet2DcvGet2D等几个函数,有些讨论说,它们比较慢.

For array operations, there are several functions like cvSet2D, cvGet2D, etc. And some discussions say, they are slower.

对于 imageROI,你需要像 cvSetImageROI 这样的特殊函数.

For imageROI, you need special functions like cvSetImageROI.

如果您找到轮廓,则返回 cvSeq 结构,与 Python 列表或 NumPy 数组相比,这种结构不太好处理.

If you find contours, cvSeq structures are returned which is not so good to work with compared to Python lists or NumPy arrays.

(而且我认为,很快它的开发就会停止.之前只有cv.后来,OpenCV 有了cvcv2.现在,在最新版本中,只有cv2 模块,而cvcv2 内部的子类.您需要调用 import cv2.cv as cv 来访问它.)

(And I think, soon its development will be stopped. Earlier, there was only cv. Later, OpenCV came with both cv and cv2. Now, there in the latest releases, there is only the cv2 module, and cv is a subclass inside cv2. You need to call import cv2.cv as cv to access it.)

cv2:

而最新的是cv2.在这里,一切都作为 NumPy 对象返回,例如 ndarraynative Python 对象,例如 lists,tuplesdictionary 等.因此,由于此 NumPy 支持,您可以在此处执行任何 numpy 操作.NumPy 是一个高度稳定且快速的数组处理库.

And the latest one is cv2. In this, everything is returned as NumPy objects like ndarray and native Python objects like lists,tuples,dictionary, etc. So due to this NumPy support, you can do any numpy operation here. NumPy is a highly stable and fast array processing library.

例如,如果您加载图像,则返回一个 ndarray.

For example, if you load an image, an ndarray is returned.

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

array[i,j] gives you the pixel value at (i,j) position.

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

Also, for imageROI, array slicing can be used like ROI=array[c1:c2,r1:r2]. No need of separate functions.

添加两张图片,不需要调用任何函数,只需执行res = img1+img2.(但 NumPy 加法是对图像等 uint8 数组的模运算.参见文章 OpenCV 和 Numpy 中矩阵算术的区别 了解更多.

To add two images, there isn't a need to call any function, just do res = img1+img2. (But NumPy addition is a modulo operation for uint8 arrays like images. See the article Difference between Matrix Arithmetic in OpenCV and Numpy to know more.

返回的轮廓是 Numpy 数组的列表.您可以在 Contours - 1:入门.

Contours returned are lists of Numpy arrays. You can find a detailed discussion about Contours in Contours - 1 : Getting Started.

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

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

A simple discussion on how NumPy speed up cv2 is in Stack Overflow question Performance comparison of OpenCV-Python interfaces, cv and cv2.

pyopencv:

我对这个不太了解,因为我没有用过它.但它似乎已经停止了进一步的开发.

I don't know much about this since I haven't used it. But it seems to have stopped further development.

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

I think it would be better to stick on to official libraries.

简而言之,我建议您使用 cv2!

您可以在<a href="http://opencvpython.blogspot.in/2012/05/install-opencv-in-中查看cv2模块的安装过程windows-for-python.html" rel="noreferrer" target="_blank">在 Windows 中为 Python 安装 OpenCV.

You can see installation procedure for the cv2 module in Install OpenCV in Windows for Python.

这篇关于所有这些 OpenCV Python 接口之间有什么不同?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,WP2

WordPress使用python会话上载文件

我需要上传图像到wordpress编程,理想情况下没有安装额外的插件。不过,我对涉及插件的最佳实践持开放态度。到目前为止,我已经能够使用会话登录和移动站点,但是当我尝试将文件上载到媒体时-新建.php或异步-上传.php我收到以下错误消息The file is a test text file with a single line (also the upload limit on the site is 1GB) so it\"s not the common file size limit. This ...

日期:2021-08-21 05:00:01 浏览:783

压缩序列化的Python数据最节省空间的方法是什么?

本文介绍了压缩序列化的Python数据最节省空间的方法是什么?的处理方法,对大家解决问题具有一定的参考价值 问题描述 发件人the Python documentation:默认情况下,Pickle数据格式使用相对紧凑的二进制表示。如果您需要最佳大小特性,您可以高效地压缩酸洗数据。我将在一个运行了几个小时的过程结束时序列化...

日期:2022-06-23 08:50:34 浏览:750

在Python中,有没有一种方法可以将一个单词分割成等分?

本文介绍了在Python中,有没有一种方法可以将一个单词分割成等分?的处理方法,对大家解决问题具有一定的参考价值 问题描述 几周前我问了这个问题,得到了答案this is the original post但我需要将输出分成相等的部分,无论字符串的长度如何,所以在我发布的第一个帖子中,我得到了这个答案,它很好地工作了,这要...

日期:2022-06-24 06:52:06 浏览:472

如何在 Google AppEngine Python37 中获取凭据

本文介绍了如何在 Google AppEngine Python37 中获取凭据的处理方法,对大家解决问题具有一定的参考价值 问题描述 我在 AppEngine Python3.7 标准中启动了新应用.I started new app in AppEngine Python3.7 stadard.我正在尝试使用以下代码段...

日期:2022-06-24 09:00:27 浏览:548

为什么 python 字符串和元组是不可变的?

本文介绍了为什么 python 字符串和元组是不可变的?的处理方法,对大家解决问题具有一定的参考价值 问题描述 我不确定为什么字符串和元组是不可变的;使它们不可变的优点和缺点是什么?I am not sure why strings and tuples were made to be immutable; what ar...

日期:2022-06-24 09:00:30 浏览:882

使用 Python 解析 Gmail 并将所有早于日期的内容标记为“已读"

本文介绍了使用 Python 解析 Gmail 并将所有早于日期的内容标记为“已读"的处理方法,对大家解决问题具有一定的参考价值 问题描述 长话短说,我创建了一个新的 gmail 帐户,并将其他几个帐户关联到该帐户(每个帐户都有 1000 条消息),我正在导入这些帐户.所有导入的邮件都以未读的形式到达,但我需要它们显示为已...

日期:2022-06-24 10:00:29 浏览:808

了解python线程错误

本文介绍了了解python线程错误的处理方法,对大家解决问题具有一定的参考价值 问题描述 阅读http://bugs.python.org/msg160297,我可以看到Stephen White编写的一个简单脚本,它演示了该异常是如何导致python线程出错的Exception AttributeError: Attri...

日期:2022-06-24 21:00:28 浏览:944

从python调用url时获取“错误"的页面源

本文介绍了从python调用url时获取“错误"的页面源的处理方法,对大家解决问题具有一定的参考价值 问题描述 尝试从网站检索页面源时,得到的文本与通过 Web 浏览器查看相同页面源时完全不同(且更短).Trying to retrieve the page source from a website, I get a c...

日期:2022-06-25 01:00:31 浏览:594

基于 Python 类的装饰器,带有可以装饰方法或函数的参数

本文介绍了基于 Python 类的装饰器,带有可以装饰方法或函数的参数的处理方法,对大家解决问题具有一定的参考价值 问题描述 我见过很多 Python 装饰器的例子:I've seen many examples of Python decorators that are:函数样式装饰器(包装函数)类样式装饰器(实现 __...

日期:2022-06-25 04:00:31 浏览:924

用python解析outlook .msg文件

本文介绍了用python解析outlook .msg文件的处理方法,对大家解决问题具有一定的参考价值 问题描述 环顾四周,没有找到满意的答案.有谁知道如何使用 Python 解析 Outlook 中的 .msg 文件?Looked around and couldn't find a satisfactory answer...

日期:2022-06-25 06:00:30 浏览:639