OpenCV 2.4.3和Python

2024-09-28 20:45:19 发布

您现在位置:Python中文网/ 问答频道 /正文

几天前,我开始寻找一种制作简单计算机视觉系统的好方法。OpenCV库是我需要的东西,但事实证明使用Python很难学习,特别是在OpenCV 2.4.3更新之后,它的Python相关文档非常少。所以我现在知道OpenCV中有很多变化,例如

import cv

是现在

import cv2

还有一些模块丢失了。我的意思是,是的,有一些新的python opencv语法的例子,但是它非常狭窄,而且很难理解。 例如: Python代码官方文档中的示例

cv2.cvtColor(src, code[, dst[, dstCn]])

我知道这段代码的含义和使用方法,至少我知道。但编写源代码和颜色代码并不能给我带来什么:

    Traceback (most recent call last):
  File "C:\FILEFOLDER\tut.py", line 11, in <module>
    cv.cvtColor('proba.jpg', 'CV_RGB2GRAY')
TypeError: an integer is required

或者,如果我试图编写类似代码的变量:

Traceback (most recent call last):
  File "C:\FILEFOLDER\tut.py", line 11, in <module>
    cv.cvtColor('proba.jpg', CV_RGB2GRAY)
NameError: name 'CV_RGB2GRAY' is not defined

那么,对于最新OpenCV,是否有任何与Python相关的参考文档/教程/书籍/指南,这些解释没有混淆像我这样的新手,以及C++或java的不需要的代码示例?


Tags: 方法代码文档import示例mostcallcv2
2条回答

我认为你在走相反的道路。

实际上,有了新的cv2模块,OpenCV与旧的cv接口相比变得简单得多。不仅简单,而且由于Numpy的支持,速度非常快,生产效率很高。唯一的问题是,我们应该知道如何恰当地使用它。

在这里,您应该使用以下函数:

img = cv2.imread('pic.jpg')
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)

我希望您访问其中一个SOF,它显示了两个模块之间的一些比较:What is different between all these OpenCV Python interfaces?

另一个SOF在这里,这是一个简单的演示,说明如何使用Numpy支持加快代码的速度:Performance comparison of OpenCV-Python interfaces, cv and cv2

<> P>不需要学习C++或C来使用OpenCV,尽管C++是官方语言。尽管如此,Python OpenCV仍然有很好的支持。一旦掌握了如何使用OpenCV,就可以将C++代码转换为Python自己。然后你可以从C++教程中学习OpenCV。例如,我开始学习OpenCV从“学习OpenCV”的Gary Bradsky,完全是在C++。当时,只有cv接口。

正如您在评论中提到的,opencvpython.blogspot.com提供了一些入门教程。我开始在OpenCV中关注新手。

另外,查看这个SOF以获取更多教程:Books for OpenCV and Python?

从另一个角度来看,允许您使用新的OpenCV安装版本运行旧的代码。。。

首先,从cv迁移到cv2与库使用许多函数的不同数据结构有关。判断函数是否在cv2和cv之间发生了变化的最简单方法是cv函数以大写字母开头。重新编写的cv2函数似乎总是有小写的第一个字母。因此,如果你使用的是一本旧书或旧的例子,你仍然可以使用传统的简历。cv现在只是嵌入到cv2中。只需在脚本顶部使用以下内容

    import cv2
    import cv2.cv as cv #required for old code not to be changed

这允许您在不更改旧代码的情况下简单地运行旧代码。我将在这里演示您的函数调用。你有。。。

    cv.cvtColor('proba.jpg', 'CV_RGB2GRAY')

我注意到的第一件事是,您的函数可能被调用错误。(如果函数的第一个字母是小写,则应以cv2开头,而不是以cv开头)。其次是传递函数的“代码”代码'是cv2和cv的成员(这里的代码是noob,如果我的一些声音不准确,请原谅我),但并不总是相同的。你有“简历RGB2GRAY”。首先,不要引用。这是一个cv‘代码’而不是cv2。你也错过了前面的简历。为了演示我认为应该如何为旧的cv版本调用函数:

    cv.CvtColor('proba.jpg', cv.CV_RGB2GRAY) #Assuming you used listed imports
    cv2.cv.CvtColor('proba.jpg', cv2.cv.CV_RGB2GRAY) #Assuming you skipped second import

现在cv2。。。

    cv2.cvtColor('proba.jpg', cv2.COLOR_RGB2GRAY)

好了,我希望这能有帮助。请记住,给定python运行脚本,您可以直接在命令行中键入任何不确定的内容。这对帮助我建立理解力是很有帮助的(我5天前第一次使用python)。例如,当您键入

    cv.CV_RGB2GRAY

直接进入python命令行,它会向您吐出“7”(方便,它是一个int)。cv2版吐出“7L”。请记住以某种形式时不时地使用WaitKey()函数,否则在某些情况下,highgui可能没有所需的时间来处理某些命令。那就结束了。抱歉,如果我涵盖了一些已经涵盖或提及的内容。如果我真的想删除它,管理员。

相关问题 更多 >