Python或OpenCV的C++编码性能有什么不同吗?

我的目标是一点一点地启动opencv,但首先我需要确定opencv的哪个API更有用。我预测Python实现较短,但运行时间将比本地C++实现更密集和慢。对于这两种观点之间的性能和编码差异,有什么可以评论的吗

如前面的答案所述,Python与C++相比较慢,C. Python是因为其简单性、可移植性以及创造性而建立的,用户需要只关心算法而不是编程问题。

但是在OpenCV中,有一些不同的东西。Python OpenCV只是原始C/C++代码的包装器。它通常用于组合这两种语言的最佳功能,以及C/C++&的性能;Python的简单性

因此,当您从Python调用OpenCV中的函数时,实际运行的是底层C/C++源代码。所以在性能上不会有太大的差异。(我记得我在某处读到性能损失是<1%,不记得在哪里。OpenCV中一些基本函数的粗略估计显示最坏情况下的损失是<4%。ie损失=[Python中花费的最大时间-C++中花费的最小时间]/所用的最短时间(C++

当你的代码有很多本地python代码时,问题就出现了。例如,如果你正在制作OpenCV中没有的函数,事情会变得更糟。这样的代码是在Python中本机运行的,这大大降低了性能

但新的OpenCV Python接口完全支持Numpy。Numpy是Python中用于科学计算的软件包。它也是原生C代码的包装器。它是一个高度优化的库,支持多种矩阵运算,非常适合图像处理。因此,如果您能够正确地组合OpenCV函数和Numpy函数,您将获得非常高速的代码

要记住的是,在Python中总是尽量避免循环和迭代。相反,请使用Numpy(和OpenCV)中提供的数组操作工具。使用C=A+B简单地添加两个numpy数组比使用双循环快很多倍

例如,您可以查看以下文章:

  1. Python中的快速数组操作
  2. OpenCV Python接口、cv和cv2的性能比较

发表评论