这可能是一个愚蠢的问题,但我需要知道。所以,我在编程方面不是那么好,还在学习。如果这个问题有点不切实际,请原谅我。
有这个人使用C ++和OpenCV作为他的图像处理算法,我不认为他在编程方面有那么好,也就是说他只知道他应该知道的项目。我被告知要与那个人合作制作一个项目。另一个人将使用他已经开发的C ++图像处理算法(当然还有OpenCV)。
问题是我在使用OpenCV和Python。是否有可能,甚至是逻辑上包装他的代码用Python调用(这意味着我将需要学习包装C ++代码的方式)或更好地要求那个人学习一些Python并只是翻译和移动他所拥有的完成了Python?
答案 0 :(得分:2)
C和C ++代码之间的区别非常重要。 OpenCV为每种语言都有不同的API,而C API很快就会becoming deprecated,因为C ++可以作为首选语言。确保您知道正在使用哪种API。
除此之外,将OpenCV代码从一个C ++移植到Python通常很简单。 API类似,绝大多数C ++函数对应于Python包装器。
例如,calcHist:
C ++:void calcHist(const Mat * images ,int nimages ,const int * channels ,InputArray mask ,OutputArray hist ,int dims ,const int * histSize ,const float ** 范围,bool uniform = true,bool accumulate = false)
Python:cv2.calcHist(图片,频道,掩码, histSize ,范围< / strong> [, hist [,累积]])→ hist
与许多Python版本的OpenCV函数一样,您可以看到一些主要区别:
鉴于在线OpenCV文档的详细信息,您可以在不太了解C ++本身的情况下自己将C ++代码移植到Python。这可能比让合作者学习一门全新语言以便移植他的代码更快,特别是考虑到您之前使用目标语言的经验。
您可能会发现Python代码通常比C ++代码运行得慢,因为它是高级的并且是解释的。此问题的严重程度取决于OpenCV之外的处理量。
移植代码需要花费大量的时间和精力。
另一种选择是在Python绑定中使用现有的C ++代码,它具有自己的优点和缺点。在这种情况下,您可以使用number of different options。